import { HTMLAttributes, ReactNode, ComponentProps } from 'react'; import { GestureOptions } from '../../utils'; import { ColorPropsValue, DivProps } from '../../types'; import { TooltipProps } from '../tooltip'; export interface MarkItem extends DivProps { label?: ReactNode; /** * label的位置 * {@link SliderBaseProps.orientation}为`horizontal`时,默认为`bottom` * {@link SliderBaseProps.orientation}为`vertical`时,默认为`right` */ labelPlacement?: 'top' | 'bottom' | 'left' | 'right'; value: number; } interface SliderBaseProps extends Omit { color?: ColorPropsValue; orientation?: 'horizontal' | 'vertical'; /** variant只改变滑块的样式 */ variant?: 'filled' | 'outlined'; /** inset为true时,滑块整体会嵌入轨道,两侧都无法滑出轨道;否则会以滑块中心点为参考,两侧可能会超出轨道。默认为`false` */ inset?: boolean; /** 轨道 */ railSize?: number; railProps?: DivProps; renderRail?(value: number, railProps: HTMLAttributes): ReactNode; renderRail?(value: [number, number], railProps: HTMLAttributes): ReactNode; /** 滑块 */ handleSize?: number; handleProps?: ComponentProps<'button'>; /** 禁用默认的滑块外边框 */ disableHandleOutline?: boolean; /** 渲染滑块,range模式时,改方法会触发两次 */ renderHandle?(value: number, handleProps: HTMLAttributes): ReactNode; tooltipProps?: TooltipProps; min?: number; max?: number; /** 滑块拖动每格的值,为null时必须配合marks使用,滑块只能在marks上 */ step?: number | null; marks?: MarkItem[]; /** mark中的标签与滑动轨道的距离,默认为`6` */ markLabelOffset?: number; disableTrack?: boolean; gestureOptions?: GestureOptions; } export interface SliderSingleProps extends SliderBaseProps { defaultValue?: number; value?: number; onChange?(value: number): void; prefix?: ReactNode | ((value: number) => ReactNode); suffix?: ReactNode | ((value: number) => ReactNode); } export interface SliderRangeProps extends SliderBaseProps { defaultValue?: [number, number]; value?: [number, number]; onChange?(value: [number, number]): void; prefix?: ReactNode | ((value: [number, number]) => ReactNode); suffix?: ReactNode | ((value: [number, number]) => ReactNode); } export type SliderProps = SliderSingleProps | SliderRangeProps; export declare const Slider: import("react").MemoExoticComponent<({ color, orientation, variant, inset, railSize, railProps, renderRail, handleSize, handleProps, disableHandleOutline, renderHandle, tooltipProps, min, max, step, marks, markLabelOffset, prefix, suffix, disableTrack, gestureOptions, defaultValue, value, onChange, ...props }: SliderProps) => import("@emotion/react/jsx-runtime").JSX.Element>; export {};