Slider
Pick a value from a range. A native range input, so the keyboard, assistive tech and forms work without extra code.
Usage
use hydroxy_leptos::slider::Slider;
use leptos::prelude::*;
pub fn demo() -> AnyView {
let (budget, set_budget) = signal(1200.0);
view! {
<div style="display: grid; gap: var(--space-8); max-width: 420px;">
// Controlled, with a formatted readout.
<Slider
label="Monthly budget"
min=0.0
max=5000.0
step=100.0
value=budget
on_input=move |v| set_budget.set(v)
format=|v: f64| format!("£{v}")
/>
// Uncontrolled.
<Slider
label="Summary length"
min=1.0
max=10.0
default_value=4.0
format=|v: f64| format!("{v} paragraphs")
name="length"
/>
<Slider label="Sources per answer" default_value=3.0 max=10.0 disabled=true />
</div>
}
.into_any()
}use dioxus::prelude::*;
use hydroxy_dioxus::slider::Slider;
#[component]
pub fn SliderDemo() -> Element {
let mut budget = use_signal(|| 1200.0);
rsx! {
div { style: "display: grid; gap: var(--space-8); max-width: 420px;",
Slider {
label: "Monthly budget",
min: 0.0,
max: 5000.0,
step: 100.0,
value: Some(budget()),
on_input: move |v| budget.set(v),
format: |v: f64| format!("£{v}"),
}
Slider {
label: "Summary length",
min: 1.0,
max: 10.0,
default_value: 4.0,
format: |v: f64| format!("{v} paragraphs"),
name: "length",
}
Slider { label: "Sources per answer", default_value: 3.0, max: 10.0, disabled: true }
}
}
}
Anatomy
| Component | data-part | Renders |
|---|---|---|
Slider | root | Wrapper. data-disabled |
Slider | header | Label row |
Slider | label | <label for> the control |
Slider | value | The current value in mono. Hidden from assistive tech, which reads the control |
Slider | control | Native <input type=range>. --ox-slider-fill drives the filled track |
Keyboard
| Key | Does |
|---|---|
ArrowRight / ArrowUp | Up one step |
ArrowLeft / ArrowDown | Down one step |
PageUp / PageDown | Up or down a larger step |
Home / End | Minimum / maximum |
Props
| Prop | Type | Notes |
|---|---|---|
label | String | Required. Visible label and accessible name |
min / max / step | f64 | Range and step. Default 0, 100 and 1 |
value | Option<f64> | Controlled value. Pair with on_input |
default_value | f64 | Initial value when uncontrolled. Defaults to min |
on_input | Callback<f64> | Called as the thumb moves |
format | Callback<f64, String> | Readout text, also used as aria-valuetext |
disabled | bool | Block changes |
name | String | Form field name |