A vertical slider input with scaling, step, ticks, units, output display and multiple value handles.
Import and register the <y-input>
custom element, upgrading any
instances already in the DOM:
import YInput from 'literal/documentation/templates/y-input.js';
Author vertical sliders:
<y-input>Volume</y-input>
min ="0"
Value at lower limit of fader. Will interpret string values with recognised
units, eg. "0dB"
or "200Hz"
, or numbers.
max ="1"
Value at upper limit of fader. Will interpret string values with recognised
units, eg. "0dB"
or "200Hz"
, or numbers.
scale ="linear"
Fader scale. This is the name of a transform to be applied over the range of the fader travel. Possible values are:
"linear"
"quadratic"
"cubic"
"log"
"log-24dB"
"log-48dB"
"log-60dB"
"log-72dB"
"log-96dB"
ticks
A space or comma separated list of values at which to display tick marks. Values may be listed with or without units, eg:
ticks="0 0.2 0.4 0.6 0.8 1"
ticks="-∞dB -48dB -36dB -24dB -12dB 0dB"
Note that the unicode ∞
infinity character is interpreted as Infinity
(after unit conversion -∞dB
is 0
and 0dB
is 1).
Ticks may optionally be given labels, displayed in lieu of the tick value. Labels are written in square brackets following the tick value:
ticks="0 [None] 0.5 [Half] 1 [Full]"
display
The units to display the value in. The output value and all ticks are displayed in this unit. Possible values are:
"dB"
– 0-1
is displayed as -∞dB
to 0dB
"Hz"
- frequency in Hz
and kHz
"bpm"
- displays rates in Hz as bpm"s"
- time in ms
and s
"semitone"
- without units"hh:mm"
– and other time formats including any of the tokens YMwdhms
Display formatters may be added by importing the formatters object:
RangeInput.displayFormats['my-format'] = (format, value) => {
// Return an object of the form `{ value, unit }`
};
This format may now be used by declaring the display attribute:
display="my-format"
step
Step is either:
"any"
(the default value)"ticks"
. The values in the ticks
attribute are used as step valuesvalue ="0"
The initial value of the element. As a <y-input>
can handle any number of
values, this may be series of space or comma separated values such as:
value="0 1 2"
Values may also be given an optional label, rendered as a handle’s title (a title is announced to screen readers and appears when hovering on a handle):
value="0 [First] 1 [Second] 2 [Last]"
.type
“number”
A readonly property with the value "number"
(provided for consistency
with native form elements, which all have a type).
.min
Value at lower limit of fader. Will interpret string values with recognised
units, eg. "0dB"
or "200Hz"
, or numbers.
.max
Value at upper limit of fader. Will interpret string values with recognised
units, eg. "0dB"
or "200Hz"
, or numbers.
.value
The value of the element expressed as a string of space-separated numbers.
(Note that the value string is not the same as the serialized form data
submitted when the <y-input>
is part of a form.)
.data
The value of the element as an array of objects.
Objects represent the values of the input. The array and objects are ‘live’ – they mutate in response to moved handles, and handles move when object values are changed.
"input"
Emitted from the element during the movement of a handle.
"change"
Emitted from the element when a handle has been moved.
::part(label)
Style the label.
::part(tick)
Style the tick marks.
::part(output)
Style the display of the output value.
--value-color
--value-color-start
--value-color-end
--handle-color
--handle-background
--handle-border
--output-color
--track-background
--track-padding
Make the range input slightly wider than the control to allow range thumb to line up with label text.
Support development: Sponsor
github.com/stephband/form-elements
github.com/stephband/form-elements/issues
Built by Stephen Band for Cruncher.
Documentation set in Euclid
and Martian Mono. Fonts
used for documentation not included as part of the license covering the
use of y-input
.