diff --git a/packages/shelter-ui-test/src/App.tsx b/packages/shelter-ui-test/src/App.tsx index 1d952f8..487fbf5 100644 --- a/packages/shelter-ui-test/src/App.tsx +++ b/packages/shelter-ui-test/src/App.tsx @@ -188,14 +188,7 @@ export default function App() {
value: {slide()}
-on: {toggle() ? "yes" : "no"}
diff --git a/packages/shelter-ui/src/slider.tsx b/packages/shelter-ui/src/slider.tsx index 5c1cb6c..566869a 100644 --- a/packages/shelter-ui/src/slider.tsx +++ b/packages/shelter-ui/src/slider.tsx @@ -1,5 +1,5 @@ import { Component, JSX } from "solid-js"; -import { css, classes } from "./slider.tsx.scss"; +import { classes, css } from "./slider.tsx.scss"; import { injectCss } from "./util"; let injectedCss = false; @@ -7,8 +7,7 @@ let injectedCss = false; export const Slider: Component<{ min: number; max: number; - // These are the little labelled ticks on the slider - steps?: string[]; + tick?: boolean | number; step?: number | "any"; class?: string; style?: JSX.CSSProperties; @@ -20,6 +19,13 @@ export const Slider: Component<{ injectCss(css); } + const ticks = () => { + if (!props.tick || typeof props.step !== "number") return []; + + const spacing = props.tick === true ? props.step : props.tick; + return Object.keys(Array(~~((props.max - props.min) / spacing) + 1).fill(0)).map((v) => parseInt(v) * spacing); + }; + return (