ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
60 lines (50 loc) • 1.8 kB
text/typescript
import { Injectable } from '@angular/core';
()
export class NzSliderService {
pauseEvent(e: Event): void {
e.stopPropagation();
e.preventDefault();
}
getPrecision(num: number): number {
const numStr = num.toString();
const dotIndex = numStr.indexOf('.');
return dotIndex >= 0 ? numStr.length - dotIndex - 1 : 0;
}
cloneArray<T>(arr: T[]): T[] {
return arr.slice();
}
isNotTouchEvent(e: TouchEvent): boolean {
return !e.touches || e.touches.length > 1 ||
(e.type.toLowerCase() === 'touchend' && e.touches.length > 0);
}
// convert value to offset in percent
valueToOffset(min: number, max: number, value: number): number {
return (value - min) / (max - min) * 100;
}
correctNumLimit(num: number, min: number, max: number): number {
let res = +num;
if (isNaN(res)) { return min; }
if (num < min) { res = min; } else if (num > max) { res = max; }
return res;
}
/**
* get the offset of an element relative to the document (Reference from jquery's offset())
* @param elem HTMLElement ref
*/
getElementOffset(elem: HTMLElement): { top: number, left: number } {
// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
// Support: IE <=11 only
// Running getBoundingClientRect on a
// disconnected node in IE throws an error
if (!elem.getClientRects().length) {
return { top: 0, left: 0 };
}
// Get document-relative position by adding viewport scroll to viewport-relative gBCR
const rect = elem.getBoundingClientRect();
const win = elem.ownerDocument.defaultView;
return {
top: rect.top + win.pageYOffset,
left: rect.left + win.pageXOffset
};
}
}