element-plus/packages/directives/repeat-click/index.ts
zazzaz b01a6f4e81
feat: Feature/timepicker && repeat-click directive (#289)
* feat: Feature/datepicker && repeat-click directive (#288)

* style: fix lint

* test: fix local test

* test: update test

* fix: update api to disabledHours

* chore: update

* chore: fix lint
2020-09-16 14:49:21 +08:00

25 lines
587 B
TypeScript

import { on, once } from '@element-plus/utils/dom'
export default {
beforeMount(el, binding) {
let interval = null
let startTime
const handler = () => binding.value && binding.value()
const clear = () => {
if (Date.now() - startTime < 100) {
handler()
}
clearInterval(interval)
interval = null
}
on(el, 'mousedown', e => {
if ((e as any).button !== 0) return
startTime = Date.now()
once(document as any, 'mouseup', clear)
clearInterval(interval)
interval = setInterval(handler, 100)
})
},
}