UNPKG

chowa

Version:

UI component library based on React

143 lines (142 loc) 4.44 kB
/** * @license chowa v1.1.3 * * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn). * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { rect(ele) { return ele.getBoundingClientRect(); }, pageOffset() { let top = 0; let left = 0; if (typeof window.pageYOffset !== 'undefined') { top = window.pageYOffset; left = window.pageXOffset; } else if (typeof document.compatMode !== 'undefined' && document.compatMode !== 'BackCompat') { top = document.documentElement.scrollTop; left = document.documentElement.scrollLeft; } else if (typeof document.body !== 'undefined') { top = document.body.scrollTop; left = document.body.scrollLeft; } return { top, left, width: window.innerWidth + left, height: window.innerHeight + top }; }, scrollTop(ele) { if (ele === window) { return document.body.scrollTop || document.documentElement.scrollTop; } else { return ele.scrollTop; } }, offset(ele) { const selfReact = this.rect(ele); const pageOffset = this.pageOffset(); return { width: selfReact.width, height: selfReact.height, top: selfReact.top + pageOffset.top, left: selfReact.left + pageOffset.left }; }, attr(ele, property, val) { if (typeof property === 'object') { for (const key in property) { if (typeof property[key] === 'string' || typeof property[key] === 'number') { ele.setAttribute(key, property[key]); } } } else if (typeof property === 'string') { if (val) { ele.setAttribute(property, val); } else { return ele.getAttribute(property); } } return null; }, removeAttr(ele, property) { ele.removeAttribute(property); }, addClass(ele, classNames) { const orginClasses = this.attr(ele, 'class'); let splitClasses = []; if (orginClasses !== null) { splitClasses = orginClasses.split(/\s+/); } classNames = Array.isArray(classNames) ? classNames : [classNames]; classNames = classNames.concat(splitClasses); ele.setAttribute('class', classNames.join(' ')); }, removeClass(ele, classNames) { const orginClasses = this.attr(ele, 'class'); if (orginClasses === null) { return; } const splitClasses = orginClasses.split(/\s+/); classNames = Array.isArray(classNames) ? classNames : [classNames]; classNames.forEach((name) => { splitClasses.splice(splitClasses.indexOf(name), 1); }); ele.setAttribute('class', splitClasses.join(' ')); }, css(ele, property, val) { if (typeof property === 'object') { for (const key in property) { if (Object.prototype.hasOwnProperty.call(ele.style, key)) { ele.style[key] = property[key]; } } } else if (typeof property === 'string') { if (val || val === 0) { ele.style[property] = val; } else { return window.getComputedStyle(ele, null)[property]; } } return null; }, removeStyle(ele, propertys) { if (!Array.isArray(propertys)) { propertys = [propertys]; } if (!propertys.length) { return; } propertys.forEach((property) => { ele.style.removeProperty(property); }); }, on(ele, ev, cb) { ele.addEventListener(ev, cb, { once: false, capture: false, passive: false }); }, off(ele, ev, cb) { ele.removeEventListener(ev, cb, { capture: false }); }, hasClass(ele, className) { return ele.getAttribute('class').split(/\s+/).includes(className); } };