x
1
2
3
4
<div class="dual-range-input" data-controller="dual-range"> <input type="range" name="range_min_field" id="range_min_field" value="25" min="0" max="100" step="1" data-dual-range-target="min" /> <input type="range" name="range_max_field" id="range_max_field" value="75" min="0" max="100" step="1" data-dual-range-target="max" /></div>
1
2
3
4
<div class="dual-range-input" data-controller="dual-range"> <%= range_field_tag "range_min_field", 25, min: 0, max: 100, step: 1, data: { dual_range_target: "min" } %> <%= range_field_tag "range_max_field", 75, min: 0, max: 100, step: 1, data: { dual_range_target: "max" } %></div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@import url("https://esm.sh/@stanko/dual-range-input@1.0.0/dist/index.css");.dual-range-input { /* Height of the input */ --dri-height: 1rem; /* Thumb size */ --dri-thumb-width: var(--dri-height); --dri-thumb-height: var(--dri-height); /* Thumb background color */ --dri-thumb-color: var(--color-primary); --dri-thumb-hover-color: var(--dri-thumb-color); --dri-thumb-active-color: var(--dri-thumb-color); /* Thumb border */ --dri-thumb-border-color: var(--dri-thumb-color); --dri-thumb-border-hover-color: var(--dri-thumb-border-color); --dri-thumb-border-active-color: var(--dri-thumb-border-color); --dri-thumb-border-radius: 1rem; --dri-thumb-border-width: 1px; /* Track size */ --dri-track-height: calc(var(--dri-height) * .45); --dri-track-border-radius: 1rem; /* Track color */ --dri-track-color: var(--color-border); --dri-track-filled-color: var(--color-primary);}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { Controller } from "@hotwired/stimulus"import DualRangeInput from "https://esm.sh/@stanko/dual-range-input@1.0.0?standalone"export default class extends Controller { static targets = [ "min", "max" ] static values = { precision: Number, default: 3 } connect() { this.dualRangeInput = new DualRangeInput(this.minTarget, this.maxTarget, this.precisionValue) } disconnect() { this.dualRangeInput.destroy() }}