shineout
Version:
Shein 前端组件库
127 lines (108 loc) • 3.2 kB
text/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 type SliderPropsWidthInputable<Value extends number | number[]> = GetInputableProps<ContainerProps<Value>, Value>
/**
* @title Slider
*/
export 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 type SliderType = typeof SliderClass