apps/mantine.dev/src/pages/core/angle-slider.mdx
import { AngleSliderDemos, UseRadialMoveDemos } from '@docs/demos'; import { Layout } from '@/layout'; import { MDX_DATA } from '@/mdx';
export default Layout(MDX_DATA.AngleSlider);
Use the AngleSlider component to pick an angle value between 0 and 360:
The AngleSlider value is a number between 0 and 360.
import { useState } from 'react';
import { AngleSlider } from '@mantine/core';
function Demo() {
const [value, setValue] = useState(180);
return <AngleSlider value={value} onChange={setValue} />;
}
AngleSlider can be used with uncontrolled forms.
Set the name attribute to include slider value in FormData object on form submission.
To control initial value in uncontrolled forms, use defaultValue prop.
Props for usage with uncontrolled forms:
name – name attribute passed to the hidden inputhiddenInputProps – additional props passed to the hidden inputExample of uncontrolled AngleSlider with FormData:
import { AngleSlider } from '@mantine/core';
export function WithFormData() {
return (
<form
onSubmit={(event) => {
event.preventDefault();
const formData = new FormData(event.currentTarget);
console.log('Checkbox group value:', formData.get('angle'));
}}
>
<AngleSlider name="angle" defaultValue={120} />
<button type="submit">Submit</button>
</form>
);
}
Use the formatLabel prop to change the angle label format.
It accepts a function that takes the angle value and returns a React node:
Set the marks prop to display marks on the slider.
A mark is an object with a value (required, number between 0 and 360) and label (optional, React node).
To restrict selection to marks only, set the restrictToMarks prop:
The onChangeEnd callback fires when the user stops dragging the slider or changes its value with the keyboard.
Use it as a debounced callback to prevent frequent updates.
The disabled prop disables the component and prevents user interaction:
To make the component accessible for screen readers, set the aria-label prop:
import { AngleSlider } from '@mantine/core';
function Demo() {
return <AngleSlider aria-label="Gradient angle" />;
}
Keyboard interactions when the component is focused:
<KeyboardEventsTable data={[ { key: 'ArrowDown', description: 'Decreases value by step' }, { key: 'ArrowLeft', description: 'Decreases value by step' }, { key: 'ArrowUp', description: 'Increases value by step' }, { key: 'ArrowRight', description: 'Increases value by step' }, { key: 'Home', description: 'Sets value to 0' }, { key: 'End', description: 'Sets value to 359' }, ]} />
AngleSlider is based on the use-radial-move hook.
You can build a custom radial slider using this hook if you need more control over the component's behavior.