view-ui-plus
Version:
A high quality UI components Library with Vue.js 3
77 lines (73 loc) • 2.62 kB
JavaScript
import handleEscapeMixin from './handleEscapeMixin';
import { getTouches } from './utils';
import { on, off } from '../../utils/dom';
import { isClient } from '../../utils/index';
export default {
mixins: [ handleEscapeMixin ],
props: {
focused: {
type: Boolean,
default: false,
},
value: {
type: Object,
default: undefined,
}
},
created () {
if (this.focused) {
setTimeout(() => this.$el.focus(), 1);
}
},
beforeUnmount () {
this.unbindEventListeners();
},
methods: {
handleLeft (e) {
this.handleSlide(e, this.left, 'left');
},
handleRight (e) {
this.handleSlide(e, this.right, 'right');
},
handleUp (e) {
this.handleSlide(e, this.up, 'up');
},
handleDown (e) {
this.handleSlide(e, this.down, 'down');
},
handleMouseDown (e) {
this.ColorPickerInstance.handleOnDragging(true);
this.handleChange(e, true);
// window.addEventListener('mousemove', this.handleChange, false);
// window.addEventListener('mouseup', this.handleMouseUp, false);
on(window, 'mousemove', this.handleChange);
on(window, 'mouseup', this.handleMouseUp);
},
handleMouseUp () {
this.unbindEventListeners();
},
unbindEventListeners () {
// window.removeEventListener('mousemove', this.handleChange);
// window.removeEventListener('mouseup', this.handleMouseUp);
off(window, 'mousemove', this.handleChange);
off(window, 'mouseup', this.handleMouseUp);
// This timeout is required so that the click handler for click-outside
// has the chance to run before the mouseup removes the dragging flag.
setTimeout(() => this.ColorPickerInstance.handleOnDragging(false), 1);
},
getLeft (e) {
if (!isClient) return;
const {container} = this.$refs;
const xOffset = container.getBoundingClientRect().left + window.pageXOffset;
const pageX = e.pageX || getTouches(e, 'PageX');
return pageX - xOffset;
},
getTop (e) {
if (!isClient) return;
const {container} = this.$refs;
const yOffset = container.getBoundingClientRect().top + window.pageYOffset;
const pageY = e.pageY || getTouches(e, 'PageY');
return pageY - yOffset;
}
}
};