Docs Components Advanced

RangeSlider

React example follows below.
ts
const rangeSliderFixture = {
id: "range-slider",
min: 0,
max: 500,
step: 10,
defaultValue: [120, 340] as [number, number],
histogram: [3, 5, 8, 12, 18, 24, 30, 26, 22, 17, 13, 10],
caption: "per-seat / month",
} as const;
import { RangeSlider } from "@grassroot/ui-react/advanced";
export default function RangeSliderDemo() {
return (
<div>
<RangeSlider
min={rangeSliderFixture.min}
max={rangeSliderFixture.max}
step={rangeSliderFixture.step}
defaultValue={rangeSliderFixture.defaultValue}
histogram={[...rangeSliderFixture.histogram]}
caption={rangeSliderFixture.caption}
format={String}
/>
</div>
);
}
ts
<script setup lang="ts">
import { ref } from "vue";
const rangeSliderFixture = {
id: "range-slider",
min: 0,
max: 500,
step: 10,
defaultValue: [120, 340] as [number, number],
histogram: [3, 5, 8, 12, 18, 24, 30, 26, 22, 17, 13, 10],
caption: "per-seat / month",
} as const;
import { RangeSlider } from "@grassroot/ui-vue";
const value = ref<[number, number]>([...rangeSliderFixture.defaultValue]);
</script>
<template>
<div>
<RangeSlider
v-model="value"
:min="rangeSliderFixture.min"
:max="rangeSliderFixture.max"
:step="rangeSliderFixture.step"
:histogram="[...rangeSliderFixture.histogram]"
:format="String"
:caption="rangeSliderFixture.caption"
/>
</div>
</template>
ts
import { Component } from "@angular/core";
const rangeSliderFixture = {
id: "range-slider",
min: 0,
max: 500,
step: 10,
defaultValue: [120, 340] as [number, number],
histogram: [3, 5, 8, 12, 18, 24, 30, 26, 22, 17, 13, 10],
caption: "per-seat / month",
} as const;
import { GrassrootRangeSlider } from "@grassroot/ui-angular";
@Component({
selector: "app-range-slider-demo",
standalone: true,
imports: [GrassrootRangeSlider],
template: `<div>
<grassroot-range-slider
[min]="fixture.min"
[max]="fixture.max"
[step]="fixture.step"
[histogram]="fixture.histogram"
[value]="fixture.defaultValue"
[format]="format"
[caption]="fixture.caption"
/>
</div>`,
})
export class RangeSliderDemoComponent {
protected readonly fixture = rangeSliderFixture;
protected readonly format = String;
}
export default RangeSliderDemoComponent;
ts
<script lang="ts">
const rangeSliderFixture = {
id: "range-slider",
min: 0,
max: 500,
step: 10,
defaultValue: [120, 340] as [number, number],
histogram: [3, 5, 8, 12, 18, 24, 30, 26, 22, 17, 13, 10],
caption: "per-seat / month",
} as const;
import { RangeSlider } from "@grassroot/ui-svelte";
</script>
<div>
<RangeSlider
min={rangeSliderFixture.min}
max={rangeSliderFixture.max}
step={rangeSliderFixture.step}
defaultValue={[...rangeSliderFixture.defaultValue]}
histogram={[...rangeSliderFixture.histogram]}
format={String}
caption={rangeSliderFixture.caption}
/>
</div>
ts
/** @jsxImportSource solid-js */
const rangeSliderFixture = {
id: "range-slider",
min: 0,
max: 500,
step: 10,
defaultValue: [120, 340] as [number, number],
histogram: [3, 5, 8, 12, 18, 24, 30, 26, 22, 17, 13, 10],
caption: "per-seat / month",
} as const;
import { RangeSlider } from "@grassroot/ui-solid";
export default function RangeSliderDemo() {
return (
<div>
<RangeSlider
min={rangeSliderFixture.min}
max={rangeSliderFixture.max}
step={rangeSliderFixture.step}
defaultValue={[...rangeSliderFixture.defaultValue]}
histogram={[...rangeSliderFixture.histogram]}
format={String}
caption={rangeSliderFixture.caption}
/>
</div>
);
}

Installation

API Reference

Import

import { RangeSlider } from "@grassroot/ui-react/advanced";

Props

Prop
Type
Default
Requirement
Description
min
number | undefined
optional
max
number | undefined
optional
step
number | undefined
optional
histogram
number[] | undefined
optional
Bar heights for the backdrop histogram (left→right buckets).
value
[number, number] | undefined
optional
defaultValue
[number, number] | undefined
optional
onChange
((value: [number, number]) => void) | undefined
optional
format
((n: number) => string) | undefined
String
optional
Format the live readout value (e.g.
caption
string | undefined
optional
Small caption under the readout.
className
string | undefined
optional
Prop
min
Type
number | undefined
Default
Requirement
optional
Description
Prop
max
Type
number | undefined
Default
Requirement
optional
Description
Prop
step
Type
number | undefined
Default
Requirement
optional
Description
Prop
histogram
Type
number[] | undefined
Default
Requirement
optional
Description
Bar heights for the backdrop histogram (left→right buckets).
Prop
value
Type
[number, number] | undefined
Default
Requirement
optional
Description
Prop
defaultValue
Type
[number, number] | undefined
Default
Requirement
optional
Description
Prop
onChange
Type
((value: [number, number]) => void) | undefined
Default
Requirement
optional
Description
Prop
format
Type
((n: number) => string) | undefined
Default
String
Requirement
optional
Description
Format the live readout value (e.g.
Prop
caption
Type
string | undefined
Default
Requirement
optional
Description
Small caption under the readout.
Prop
className
Type
string | undefined
Default
Requirement
optional
Description

Events

EventPayload
onChange((value: [number, number]) => void) | undefined

Import

import { ref } from "vue";
import { RangeSlider } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
modelValue
RangeSliderPair | undefined
optional
min
number | undefined
0
optional
max
number | undefined
100
optional
step
number | undefined
1
optional
histogram
number[] | undefined
() => []
optional
format
((n: number) => string) | undefined
() => String
optional
caption
string | undefined
optional
Prop
modelValue
Type
RangeSliderPair | undefined
Default
Requirement
optional
Prop
min
Type
number | undefined
Default
0
Requirement
optional
Prop
max
Type
number | undefined
Default
100
Requirement
optional
Prop
step
Type
number | undefined
Default
1
Requirement
optional
Prop
histogram
Type
number[] | undefined
Default
() => []
Requirement
optional
Prop
format
Type
((n: number) => string) | undefined
Default
() => String
Requirement
optional
Prop
caption
Type
string | undefined
Default
Requirement
optional

Events

EventPayload
update:modelValue[value: RangeSliderPair]

Import

import { Component } from "@angular/core";
import { GrassrootRangeSlider } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
value
RangeSliderPair
optional
min
number
0
optional
max
number
100
optional
step
number
1
optional
histogram
number[]
[]
optional
format
(n: number) => string
String
optional
caption
string
optional
Prop
value
Type
RangeSliderPair
Default
Requirement
optional
Prop
min
Type
number
Default
0
Requirement
optional
Prop
max
Type
number
Default
100
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
histogram
Type
number[]
Default
[]
Requirement
optional
Prop
format
Type
(n: number) => string
Default
String
Requirement
optional
Prop
caption
Type
string
Default
Requirement
optional

Events

EventPayload
valueChangeRangeSliderPair

Import

import { RangeSlider } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
value
RangeSliderPair
optional
defaultValue
RangeSliderPair
optional
onChange
(value: [number, number]) => void
optional
min
number
0
optional
max
number
100
optional
step
number
1
optional
histogram
number[]
optional
format
(value: number) => string
optional
caption
string
optional
className
string
optional
Prop
value
Type
RangeSliderPair
Default
Requirement
optional
Prop
defaultValue
Type
RangeSliderPair
Default
Requirement
optional
Prop
onChange
Type
(value: [number, number]) => void
Default
Requirement
optional
Prop
min
Type
number
Default
0
Requirement
optional
Prop
max
Type
number
Default
100
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
histogram
Type
number[]
Default
Requirement
optional
Prop
format
Type
(value: number) => string
Default
Requirement
optional
Prop
caption
Type
string
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onChange(value: [number, number]) => void

Import

import { RangeSlider } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
min
number
0
optional
max
number
100
optional
step
number
1
optional
histogram
number[]
optional
value
[number, number]
optional
defaultValue
[number, number]
optional
onChange
(value: [number, number]) => void
optional
format
(value: number) => string
optional
caption
string
optional
className
string
optional
Prop
min
Type
number
Default
0
Requirement
optional
Prop
max
Type
number
Default
100
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
histogram
Type
number[]
Default
Requirement
optional
Prop
value
Type
[number, number]
Default
Requirement
optional
Prop
defaultValue
Type
[number, number]
Default
Requirement
optional
Prop
onChange
Type
(value: [number, number]) => void
Default
Requirement
optional
Prop
format
Type
(value: number) => string
Default
Requirement
optional
Prop
caption
Type
string
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onChange(value: [number, number]) => void