shineout
Version:
Shein 前端组件库
108 lines (107 loc) • 3.41 kB
TypeScript
import React from 'react';
import { StandardProps } from '../@types/common';
import { GetInputableProps } from '../Form/Props';
export interface ContainerProps<Value extends number | number[]> extends StandardProps {
/**
* @en Form field, used with Form
* @cn 表单字段, 配合 Form 使用
*/
name?: string;
/**
* @en Automatically hides the current value and scale
* @cn 是否自动隐藏当前值和刻度
* @default false
*/
autoHide?: boolean;
/**
* @en Format displayed scale. When it is false, the scale is not displayed.
* @cn 格式化显示刻度,为 false 时,不显示刻度
* @default v => v
*/
formatScale?: ((value: number, index?: number) => string | number) | false;
/**
* @en Format displayed current value. When it is false, the current value is not displayed.
* @cn 格式化显示当前值,为 false 时,不显示当前值
* @default v => v
*/
formatValue?: ((value: number) => string) | false;
/**
* @en height. Only effect when vertical is true
* @cn 高度,仅在 vertical 为 true 情况下有效
* @default 200
*/
height?: number;
/**
* @en The callback function when the value is changing.
* @cn 值改变时回调函数
*/
onChange: (value: Value) => void;
/**
* @en Value range. An array whose length is greater than 2.
* @cn 取值范围,长度 >= 2 的数组
* @default [0, 100]
*/
scale?: number[];
/**
* @en Step size. Must be greater than or equal to 0; When it is 0, only the value specified by scale can be selected.
* @cn 步长,必须大于等于0;为0时,只能选取 scale 指定的值
* @default 1
*/
step?: number;
/**
* @en current value
* @cn 当前值
* @override number | number[]
*/
value?: Value;
/**
* @en default value
* @cn 默认值
*/
defaultValue?: Value;
/**
* @en Whether to be vertical
* @cn 是否垂直
* @default false
*/
vertical?: boolean;
/**
* @en Whether to display double slider
* @cn 是否显示双滑块
* @default false
*/
range?: boolean;
/**
* @en Disable component
* @cn 是否禁用组件
* @default false
*/
disabled?: boolean;
/**
* @en Drag over the maximum event
* @cn 拖动超过最大值事件
*/
onIncrease?: () => void;
}
export interface BaseSliderProps<Value extends number | number[]> extends Pick<ContainerProps<Value>, 'disabled' | 'autoHide' | 'formatValue' | 'vertical' | 'onIncrease' | 'step'> {
index: 0 | 1;
min?: number;
max?: number;
onChange: (index: 0 | 1, val: number) => void;
onDrag?: any;
scale: number[];
value: number;
}
export interface IndicatorProps {
disabled?: boolean;
onDragStart: () => void;
}
export declare type SliderPropsWidthInputable<Value extends number | number[]> = GetInputableProps<ContainerProps<Value>, Value>;
/**
* @title Slider
*/
export declare type SliderProps<Value extends number | number[]> = Omit<SliderPropsWidthInputable<Value>, 'filterSameChange'>;
export declare class SliderClass<Value extends number | number[]> extends React.Component<SliderProps<Value>, {}> {
render(): JSX.Element;
}
export declare type SliderType = typeof SliderClass;