jpush-ui
Version:
极光大数据前端Angular组件(^6.1.0)
233 lines • 7.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var DomUtil = /** @class */ (function () {
function DomUtil() {
}
// 添加class
// 添加class
DomUtil.addClass =
// 添加class
function (element, className) {
if (element.classList) {
var styles = className.split(' ');
for (var _i = 0, styles_1 = styles; _i < styles_1.length; _i++) {
var style = styles_1[_i];
element.classList.add(style);
}
}
else {
var styles = className.split(' ');
for (var _a = 0, styles_2 = styles; _a < styles_2.length; _a++) {
var style = styles_2[_a];
element.className += ' ' + style;
}
}
};
// 移除class
// 移除class
DomUtil.removeClass =
// 移除class
function (element, className) {
if (element.classList) {
element.classList.remove(className);
}
else {
element.className = element.className.replace(new RegExp('(^|\\b)'
+ className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
};
// 判断class
// 判断class
DomUtil.hasClass =
// 判断class
function (element, className) {
if (element.classList) {
return element.classList.contains(className);
}
else {
return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
}
};
// 查找指定父元素
// 查找指定父元素
DomUtil.parent =
// 查找指定父元素
function (el, find) {
var parentEl = el.parentElement;
var findName = '';
var sttr = '';
if (find.indexOf('.') !== -1) {
sttr = 'className';
findName = find.replace('.', '');
}
else if (find.indexOf('#') !== -1) {
sttr = 'id';
findName = find.replace('#', '');
}
if (parentEl[sttr].indexOf(findName) !== -1) {
return parentEl;
}
else {
return this.parent(parentEl, find);
}
};
// 查找出本身的兄弟元素
// 查找出本身的兄弟元素
DomUtil.siblings =
// 查找出本身的兄弟元素
function (element) {
var res = Array.prototype.filter.call(element.parentNode.children, function (child) {
return child !== element;
});
return res;
};
// 查找所有子元素
// 查找所有子元素
DomUtil.find =
// 查找所有子元素
function (element, selector) {
return element.querySelectorAll(selector);
};
// 查找第一个子元素
// 查找第一个子元素
DomUtil.findSingle =
// 查找第一个子元素
function (element, selector) {
return element.querySelector(selector);
};
// 获取页面宽高
// 获取页面宽高
DomUtil.getViewport =
// 获取页面宽高
function () {
var win = window;
var d = document;
var e = d.documentElement;
var g = d.getElementsByTagName('body')[0];
var w = win.innerWidth || e.clientWidth || g.clientWidth;
var h = win.innerHeight || e.clientHeight || g.clientHeight;
return {
width: w,
height: h
};
};
// 获取隐藏元素
// 获取隐藏元素
DomUtil.getHiddenElementDimensions =
// 获取隐藏元素
function (element) {
var dimensions = {};
element.style.visibility = 'hidden';
element.style.display = 'block';
dimensions.width = element.offsetWidth;
dimensions.height = element.offsetHeight;
element.style.display = 'none';
element.style.visibility = 'visible';
return dimensions;
};
// 控制元素位置
// 控制元素位置
DomUtil.relativePosition =
// 控制元素位置
function (element, target) {
var elementDimensions = element.offsetParent ?
{
width: element.outerWidth,
height: element.outerHeight
} : this.getHiddenElementDimensions(element);
var targetHeight = target.offsetHeight;
var targetWidth = target.offsetWidth;
var targetOffset = target.getBoundingClientRect();
var viewport = this.getViewport();
var top;
var left;
if (elementDimensions.height < viewport.height
&& (targetOffset.top + targetHeight + elementDimensions.height)
> viewport.height) {
top = -1 * (elementDimensions.height);
}
else {
top = targetHeight;
}
if (elementDimensions.width < viewport.width
&& (targetOffset.left + elementDimensions.width)
> viewport.width) {
left = targetWidth - elementDimensions.width;
}
else {
left = 0;
}
element.style.top = top + 'px';
element.style.left = left + 'px';
};
// 透明度渐显
// 透明度渐显
DomUtil.fadeIn =
// 透明度渐显
function (element, duration, callback) {
element.style.opacity = 0;
var last = +new Date();
var opacity = 0;
var tick = function () {
opacity = +element.style.opacity + (new Date().getTime() - last) / duration;
element.style.opacity = opacity;
last = +new Date();
if (+opacity < 1) {
if (window.requestAnimationFrame) {
window.requestAnimationFrame(tick);
}
else {
setTimeout(tick, 16);
}
}
else {
if (callback) {
callback(element);
}
}
};
tick();
};
// 透明度渐隐
// 透明度渐隐
DomUtil.fadeOut =
// 透明度渐隐
function (element, ms, callback) {
var opacity = 1;
var interval = 50;
var duration = ms;
var gap = interval / duration;
var fading = setInterval(function () {
opacity = opacity - gap;
if (opacity <= 0) {
opacity = 0;
clearInterval(fading);
if (callback) {
callback(element);
}
}
element.style.opacity = opacity;
}, interval);
};
DomUtil.bindBodyClick = function (renderer, handler) {
if (renderer.listenGlobal) {
var documentClickListener = renderer.listenGlobal('body', 'click', function (e) {
// console.log('click');
if (handler) {
handler.call(null, e);
}
});
}
else {
var documentClickListener = renderer.listen('body', 'click', function (e) {
// console.log('click');
if (handler) {
handler.call(null, e);
}
});
}
};
return DomUtil;
}());
exports.DomUtil = DomUtil;
//# sourceMappingURL=dom-handler.service.js.map