UNPKG

jpush-ui

Version:

极光大数据前端Angular组件(^6.1.0)

233 lines 7.29 kB
"use strict"; 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