vue-slider-component
Version:
A highly customized slider component
62 lines • 2.16 kB
JavaScript
export const getSize = (value) => {
return typeof value === 'number' ? `${value}px` : value;
};
/** Get the distance of the element from the top/left of the page */
export const getOffset = (elem) => {
const doc = document.documentElement;
const body = document.body;
const rect = elem.getBoundingClientRect();
const offset = {
y: rect.top + (window.pageYOffset || doc.scrollTop) - (doc.clientTop || body.clientTop || 0),
x: rect.left + (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || body.clientLeft || 0),
};
return offset;
};
/**
* Get the position of the mouse/finger in the element
* @param e Trigger event
* @param elem Container element
* @param isReverse From the right/bottom
*/
export const getPos = (e, elem, isReverse, zoom = 1) => {
const event = 'targetTouches' in e ? e.targetTouches[0] : e;
const offset = getOffset(elem);
const posObj = {
x: event.pageX - offset.x,
y: event.pageY - offset.y,
};
return {
x: isReverse ? elem.offsetWidth * zoom - posObj.x : posObj.x,
y: isReverse ? elem.offsetHeight * zoom - posObj.y : posObj.y,
};
};
export const getKeyboardHandleFunc = (e, params) => {
if (params.hook) {
const result = params.hook(e);
if (typeof result === 'function')
return result;
if (!result)
return null;
}
switch (e.keyCode) {
case 38 /* UP */:
return i => (params.direction === 'ttb' ? i - 1 : i + 1);
case 39 /* RIGHT */:
return i => (params.direction === 'rtl' ? i - 1 : i + 1);
case 40 /* DOWN */:
return i => (params.direction === 'ttb' ? i + 1 : i - 1);
case 37 /* LEFT */:
return i => (params.direction === 'rtl' ? i + 1 : i - 1);
case 35 /* END */:
return () => params.max;
case 36 /* HOME */:
return () => params.min;
case 33 /* PAGE_UP */:
return i => i + 10;
case 34 /* PAGE_DOWN */:
return i => i - 10;
default:
return null;
}
};
//# sourceMappingURL=index.js.map