Greums's picture
first alpha version
1982de5
raw
history blame
2.07 kB
// import * as RadixSlider from "@radix-ui/react-slider";
// import style from "./style.module.scss";
// import {useState} from "preact/hooks";
//
// export function Slider(props: {
// value: number,
// min: number,
// max: number,
// step: number,
// onChange: (value: number) => void,
// className?: string,
// disabled?: boolean,
// }) {
// const [value, setValue] = useState(1)
//
// return (
// <div className={style.rangeSlider} style={`--min:0; --max:5; --step:0.5; --value:${value}; --text-value:"${value}"`}>
// <input
// type="range"
// min="0"
// max="5"
// step="0.1"
// value={value}
// onInput={(e) => setValue(Number((e.target as HTMLInputElement).value))}
// // onInput="this.parentNode.style.setProperty('--value',this.value); this.parentNode.style.setProperty('--text-value', JSON.stringify(this.value))"
// />
// <output></output>
// <div className={style.progress}></div>
// </div>
// )
// }
import style from "./style.module.scss";
export function Slider(props: {
name: string,
value: number,
min: number,
max: number,
step: number,
onChange: (value: number) => void,
className?: string,
disabled?: boolean,
}) {
return (
<div className={style.rangeSlider} style={`--min:${props.min}; --max:${props.max}; --step:${Math.max(props.step, 0.5)}; --value:${props.value}; --text-value:"${props.value}";`}>
<input
name={props.name}
type="range"
min={props.min}
max={props.max}
step={props.step}
value={props.value}
onInput={(e) => props.onChange(Number((e.target as HTMLInputElement).value))}
/>
<output></output>
<div className={style.progress}></div>
</div>
)
}