///
import { ChangeContext, ControlledProps } from "../form/controlled";
import { StyledProps } from "../_type";
export declare type SliderProps = SingleSliderProps | RangeSliderProps;
export interface SliderCommonProps extends StyledProps {
/**
* 最小值
* @default 0
*/
min?: number;
/**
* 最大值
*/
max: number;
/**
* 刻度标记
*/
marks?: SliderMarkItem[];
/**
* 步长,必须大于 0,且可被 (max - min) 除尽
* @default 1
*/
step?: number;
/**
* 是否只能拖拽到刻度上
* @default false
*/
markValueOnly?: boolean;
/**
* 是否禁用
* @default false
*/
disabled?: boolean;
/**
* 后置内容
*/
after?: React.ReactNode;
/**
* Bubble 中提示为该函数为返回值,若为 `null` 则隐藏
* @docType (value: number) => React.ReactNode
*/
tipFormatter?: (value: number) => React.ReactNode;
/**
* 是否在滑轨上显示提示
* @default false
*/
enableTrackTip?: boolean;
/**
* 垂直模式
* @default false
* @since 2.5.0
*/
vertical?: boolean;
}
/**
* 单滑块 Slider
*/
interface SingleSliderUniqueProps extends ControlledProps {
/**
* 范围选择模式
* @default false
* @since 2.5.0
*/
rangeMode?: false;
/**
* 可选范围
* @default [min, max]
*/
range?: [number, number] | [number, number][];
/**
* 可选点值
* @since 2.7.3
*/
dotValues?: number[];
/**
* 多段可选范围模式
* @default false
* @since 2.7.3
*/
multiRangeMode?: boolean;
/**
* 滑动过程中 value 更新回调
*/
onUpdate?: (value: number) => void;
}
/**
* 双滑块 Slider
*/
interface RangeSliderUniqueProps extends ControlledProps<[number, number]> {
/**
* 范围选择模式
* @default false
* @since 2.5.0
*/
rangeMode: true;
/**
* 可选范围
* @default [min, max]
*/
range?: [number, number];
/**
* 滑动过程中 value 更新回调
*/
onUpdate?: (value: [number, number]) => void;
}
export interface SingleSliderProps extends SliderCommonProps, SingleSliderUniqueProps {
}
export interface RangeSliderProps extends SliderCommonProps, RangeSliderUniqueProps {
}
export interface SliderMarkItem {
/**
* 值
*/
value: number;
/**
* 标记
*/
label?: string;
}
export interface SliderHandleProps {
classPrefix: string;
vertical: boolean;
offset: number;
value: number;
dragging?: boolean;
enableTip?: boolean;
tipFormatter: SliderCommonProps["tipFormatter"];
}
export interface SliderTrackProps extends Omit, Pick {
value: [number, number];
onChange: (value: [number, number], context: ChangeContext) => void;
onUpdate?: (value: [number, number]) => void;
}
export {};