mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-15 01:41:20 +08:00
111 lines
2.6 KiB
TypeScript
111 lines
2.6 KiB
TypeScript
import { ComputedRef, Ref } from 'vue'
|
|
|
|
export interface ISliderProps {
|
|
modelValue: number | number[]
|
|
min: number
|
|
max: number
|
|
step: number
|
|
value: number | number[]
|
|
showInput: boolean
|
|
showInputControls: boolean
|
|
inputSize: string
|
|
showStops: boolean
|
|
showTooltip: boolean
|
|
formatTooltip: (val: number) => number | string
|
|
disabled: boolean
|
|
range: boolean
|
|
vertical: boolean
|
|
height: string
|
|
debounce: number
|
|
label: string
|
|
tooltipClass: string
|
|
marks: Record<number, any>
|
|
}
|
|
|
|
export interface ISliderInitData {
|
|
firstValue: Nullable<number>
|
|
secondValue: Nullable<number>
|
|
oldValue: Nullable<number>
|
|
dragging: boolean
|
|
sliderSize: number
|
|
}
|
|
|
|
export interface ISliderProvider {
|
|
disabled: ComputedRef<boolean>
|
|
min: ComputedRef<number>
|
|
max: ComputedRef<number>
|
|
step: ComputedRef<number>
|
|
showTooltip: ComputedRef<boolean>
|
|
precision: ComputedRef<number>
|
|
sliderSize: ComputedRef<number>
|
|
formatTooltip: ComputedRef<(value: number) => number | string>
|
|
emitChange: () => void
|
|
resetSize: () => void
|
|
updateDragging: (val: boolean) => void
|
|
}
|
|
|
|
export type Mark = {
|
|
point: number
|
|
position: number
|
|
mark: {[s: string]: any;}
|
|
}
|
|
|
|
export type Marks = ComputedRef<Mark[]>
|
|
|
|
export type Stops = {
|
|
stops: ComputedRef<number[]>
|
|
getStopStyle: (position: number) => CSSStyleDeclaration
|
|
}
|
|
|
|
export type Slide = {
|
|
slider: Ref<HTMLElement>
|
|
firstButton: Ref<ISliderButton>
|
|
secondButton: Ref<ISliderButton>
|
|
sliderDisabled: ComputedRef<boolean>
|
|
minValue: ComputedRef<number>
|
|
maxValue: ComputedRef<number>
|
|
runwayStyle: ComputedRef<CSSStyleDeclaration>
|
|
barStyle: ComputedRef<CSSStyleDeclaration>
|
|
resetSize: () => void
|
|
setPosition: (percent: number) => void
|
|
emitChange: () => void
|
|
onSliderClick: (event: MouseEvent) => void
|
|
}
|
|
|
|
export type ButtonRefs = {
|
|
[s in 'firstButton' | 'secondButton']: Ref<Nullable<ISliderButton>>
|
|
}
|
|
|
|
export interface ISliderButtonProps {
|
|
modelValue: number
|
|
vertical: boolean
|
|
tooltipClass: string
|
|
}
|
|
|
|
export interface ISliderButtonInitData {
|
|
hovering: boolean
|
|
dragging: boolean
|
|
isClick: boolean
|
|
startX: number
|
|
currentX: number
|
|
startY: number
|
|
currentY: number
|
|
startPosition: number
|
|
newPosition: number
|
|
oldValue: number
|
|
}
|
|
|
|
export interface ISliderButton {
|
|
tooltip: Ref<Nullable<HTMLElement>>
|
|
tooltipVisible: Ref<boolean>
|
|
showTooltip: Ref<boolean>
|
|
wrapperStyle: ComputedRef<CSSStyleDeclaration>
|
|
formatValue: ComputedRef<number | string>
|
|
handleMouseEnter: () => void
|
|
handleMouseLeave: () => void
|
|
onButtonDown: (event: MouseEvent | TouchEvent) => void
|
|
onLeftKeyDown: () => void
|
|
onRightKeyDown: () => void
|
|
setPosition: (newPosition: number) => void
|
|
}
|