import { tag, WeElement, h, extractClass, classNames } from 'omi' import * as css from './index.scss' import { MDCSlider } from '@material/slider' //@ts-ignore import '../theme.ts' interface Props { discrete?: boolean, value?: number, disabled?: boolean, min: number, max: number, step: number, displayMarkers?: boolean } interface Data { } @tag('m-slider') export default class Slider extends WeElement{ static css = css static defaultProps = { value: 0, step: 1, min: 0, max: 100 } static propTypes = { discrete: Boolean, value: Number, disabled: Boolean, min: Number, max: Number, step: Number, displayMarkers: Boolean } installed() { const slider = new MDCSlider(this.shadowRoot.querySelector('.mdc-slider')); slider.listen('MDCSlider:change', () => { this.fire('change', { value: slider.value }) }); } render(props) { const count = (props.max - props.min) / props.step return (
{props.displayMarkers &&
{ new Array(count).map(_ =>
) }
}
{props.discrete &&
}
) } }