Files
element/src/directives/repeat-click.js
mrsai 027291907c InputNumber: fix touch one click trigger twice on the window touch pad (#21760)
* fix touch one click trigger twice on the window touch pad

* change var bane
2023-02-09 20:33:34 +08:00

27 lines
712 B
JavaScript

import { once, on } from 'element-ui/src/utils/dom';
import { isMac } from 'element-ui/src/utils/util';
export default {
bind(el, binding, vnode) {
let interval = null;
let startTime;
const maxIntervals = isMac() ? 100 : 300;
const handler = () => vnode.context[binding.expression].apply();
const clear = () => {
if (Date.now() - startTime < maxIntervals) {
handler();
}
clearInterval(interval);
interval = null;
};
on(el, 'mousedown', (e) => {
if (e.button !== 0) return;
startTime = Date.now();
once(document, 'mouseup', clear);
clearInterval(interval);
interval = setInterval(handler, maxIntervals);
});
}
};