mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* feat(components): [slider] placement feat: add fallback placements feat: rename tooltip-placement refactor: test code docs: add placement attribute docs: prettier * docs: example placement
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { placements } from '@popperjs/core'
|
|
import { buildProps, isNumber } from '@element-plus/utils'
|
|
import { UPDATE_MODEL_EVENT } from '@element-plus/constants'
|
|
import type { ExtractPropTypes, Ref } from 'vue'
|
|
import type Button from './button.vue'
|
|
|
|
export const sliderButtonProps = buildProps({
|
|
modelValue: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
vertical: Boolean,
|
|
tooltipClass: String,
|
|
placement: {
|
|
type: String,
|
|
values: placements,
|
|
default: 'top',
|
|
},
|
|
} as const)
|
|
export type SliderButtonProps = ExtractPropTypes<typeof sliderButtonProps>
|
|
|
|
export const sliderButtonEmits = {
|
|
[UPDATE_MODEL_EVENT]: (value: number) => isNumber(value),
|
|
}
|
|
export type SliderButtonEmits = typeof sliderButtonEmits
|
|
|
|
export type SliderButtonInstance = InstanceType<typeof Button>
|
|
|
|
export type ButtonRefs = Record<
|
|
'firstButton' | 'secondButton',
|
|
Ref<SliderButtonInstance | undefined>
|
|
>
|
|
|
|
export interface SliderButtonInitData {
|
|
hovering: boolean
|
|
dragging: boolean
|
|
isClick: boolean
|
|
startX: number
|
|
currentX: number
|
|
startY: number
|
|
currentY: number
|
|
startPosition: number
|
|
newPosition: number
|
|
oldValue: number
|
|
}
|