Angle Slider
A component for selecting a value within a circular range.
45°
Examples
Basic
Here's a basic example of the Angle Slider component.
import { AngleSlider } from '@ark-ui/react/angle-slider'
export const Basic = () => {
return (
<AngleSlider.Root>
<AngleSlider.Label>Wind direction</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
{[0, 45, 90, 135, 180, 225, 270, 315].map((value, i) => (
<AngleSlider.Marker key={i} value={value} />
))}
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
import { AngleSlider } from '@ark-ui/solid/angle-slider'
import { For } from 'solid-js'
export const Basic = () => {
return (
<AngleSlider.Root>
<AngleSlider.Label>Angle</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
<For each={[0, 45, 90, 135, 180, 225, 270, 315]}>
{(value) => <AngleSlider.Marker value={value}>{value}°</AngleSlider.Marker>}
</For>
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
<script setup lang="ts">
import { AngleSlider } from '@ark-ui/vue/angle-slider'
</script>
<template>
<AngleSlider.Root>
<AngleSlider.Label>Wind direction</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
<AngleSlider.Marker v-for="(value, i) in [0, 45, 90, 135, 180, 225, 270, 315]" :key="i" :value="value" />
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
</template>
Controlled
Use the value
and onValueChange
props to control the value of the Angle Slider.
import { AngleSlider } from '@ark-ui/react/angle-slider'
import { useState } from 'react'
export const Controlled = () => {
const [angle, setAngle] = useState(180)
return (
<AngleSlider.Root value={angle} onValueChange={({ value }) => setAngle(value)}>
<AngleSlider.Label>Temperature</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
{[0, 45, 90, 135, 180, 225, 270, 315].map((value, i) => (
<AngleSlider.Marker key={i} value={value} />
))}
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText>{angle} ºC </AngleSlider.ValueText>
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
import { AngleSlider } from '@ark-ui/solid/angle-slider'
import { For, createSignal } from 'solid-js'
export const Controlled = () => {
const [value, setValue] = createSignal(0)
return (
<AngleSlider.Root value={value()} onValueChange={(e) => setValue(e.value)}>
<AngleSlider.Label>Angle</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
<For each={[0, 45, 90, 135, 180, 225, 270, 315]}>
{(value) => <AngleSlider.Marker value={value}>{value}°</AngleSlider.Marker>}
</For>
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
<script setup lang="ts">
import { AngleSlider } from '@ark-ui/vue/angle-slider'
import { ref } from 'vue'
const angle = ref(180)
</script>
<template>
<AngleSlider.Root v-model="angle">
<AngleSlider.Label>Temperature</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
<AngleSlider.Marker v-for="(value, i) in [0, 45, 90, 135, 180, 225, 270, 315]" :key="i" :value="value" />
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText>{{ angle }} ºC</AngleSlider.ValueText>
<AngleSlider.HiddenInput />
</AngleSlider.Root>
</template>
Steps
Use the step
prop to set the discrete steps of the Angle Slider.
import { AngleSlider } from '@ark-ui/react/angle-slider'
export const Step = () => {
return (
<AngleSlider.Root step={15}>
<AngleSlider.Label>Wind direction (15 step)</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
{[0, 45, 90, 135, 180, 225, 270, 315].map((value, i) => (
<AngleSlider.Marker key={i} value={value} />
))}
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
import { AngleSlider } from '@ark-ui/solid/angle-slider'
import { For } from 'solid-js'
export const Step = () => {
return (
<AngleSlider.Root step={45}>
<AngleSlider.Label>Angle</AngleSlider.Label>
<AngleSlider.Control>
<AngleSlider.Thumb />
<AngleSlider.MarkerGroup>
<For each={[0, 45, 90, 135, 180, 225, 270, 315]}>{(value) => <AngleSlider.Marker value={value} />}</For>
</AngleSlider.MarkerGroup>
</AngleSlider.Control>
<AngleSlider.ValueText />
<AngleSlider.HiddenInput />
</AngleSlider.Root>
)
}
Example not found