Files
element-plus/packages/components/slider/src/button.ts
류한경 5b817d3008 feat(components): [slider] placement (#8561)
* feat(components): [slider] placement

feat: add fallback placements

feat: rename tooltip-placement

refactor: test code

docs: add placement attribute

docs: prettier

* docs: example placement
2022-07-04 22:35:53 +08:00

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
}