/** * @author Hanz * @date 2021/11/5 下午4:05 * @description */ import React from 'react'; export type TooltipPlacement = 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom'; interface SliderRange { draggableTrack?: boolean; } export interface SliderMarks { [key: number]: React.ReactNode | { style: React.CSSProperties; label: React.ReactNode; }; } export interface HandleGeneratorInfo { value?: number; dragging?: boolean; index: number; } export type HandleGeneratorFn = (config: { tooltipPrefixCls?: string; info: HandleGeneratorInfo; }) => React.ReactElement; export interface SliderBaseProps { /** 前缀 */ prefix?: React.ReactNode; /** 后缀 */ suffix?: React.ReactNode; /** 反向坐标 */ reverse?: boolean; /** 最小值 */ min?: number; /** 最大值 */ max?: number; /** 步长,取值必须大于 0,并且可被 (max - min) 整除, * 当 marks 不为空对象时, * 可以设置 step 为 null, * 此时 Slider 的可选值仅有 marks 标出来的部分 */ step?: null | number; /** 刻度标记,key 的类型必须为 number * 且取值在闭区间 [min, max] 内,每个标签可以单独设置样式 */ marks?: SliderMarks; /** 是否只能拖拽到刻度上 */ dots?: boolean; /** marks 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列 */ included?: boolean; /** 禁用状态 */ disabled?: boolean; /** 垂直方向 */ vertical?: boolean; /** 提示格式化回调 */ tipFormatter?: null | ((value?: number) => React.ReactNode); /** 类名 */ className?: string; /** style */ style?: React.CSSProperties; /** tooltip 是否始终显示 */ tooltipVisible?: boolean; /** tooltip 显示位置 */ tooltipPlacement?: TooltipPlacement; /** tooltip 挂载节点 */ getTooltipPopupContainer?: (triggerNode: HTMLElement) => HTMLElement; /** 是否获得焦点 */ autoFocus?: boolean; } export interface SliderSingleProps extends SliderBaseProps { /** 非范围slider */ range?: false; /** 当前值 */ value?: number; /** 默认值 */ defaultValue?: number; /** 值变化时回调 */ onChange?: (value: number) => void; /** 值变化后回调 */ onAfterChange?: (value: number) => void; /** handle 样式 */ handleStyle?: React.CSSProperties; /** 轨道样式 */ trackStyle?: React.CSSProperties; } export interface SliderRangeProps extends SliderBaseProps { /** 范围slider */ range: true | SliderRange; /** 当前值 */ value?: number[]; /** 默认值 */ defaultValue?: number[]; /** 值变化时回调 */ onChange?: (value: number[]) => void; /** 值变化后回调 */ onAfterChange?: (value: number[]) => void; /** handle 样式 */ handleStyle?: React.CSSProperties[]; /** 轨道样式 */ trackStyle?: React.CSSProperties[]; /** 允许跨越 */ allowCross?: boolean; /** 允许推动 */ pushable?: boolean | number; } export {};