import { ReactElement } from 'react'; import RcSlider from 'rc-slider'; import { HandleProps } from 'rc-slider/lib/Handles/Handle'; import { SliderTooltip } from '@@/Tip/SliderTooltip'; import styles from './Slider.module.css'; import 'rc-slider/assets/index.css'; export interface Props { min: number; max: number; step: number; value: number; onChange: (value: number | number[]) => void; dataCy: string; // true if you want to always show the tooltip visibleTooltip?: boolean; disabled?: boolean; } export function Slider({ min, max, step, value, onChange, dataCy, visibleTooltip: visible, disabled, }: Props) { const marks = { [min]: visible && value / max < 0.1 ? '' : translateMinValue(min), [max]: visible && value / max > 0.9 ? '' : max.toString(), }; return (
); } function translateMinValue(value: number) { if (value === 0) { return 'unlimited'; } return value.toString(); } function sliderTooltip( node: ReactElement, handleProps: { value: number } ) { return ( ); }