UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

217 lines (216 loc) 6.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addClass = addClass; exports.browse = exports.blurRecursive = void 0; exports.getAbsolutePos = getAbsolutePos; exports.getDomNode = getDomNode; exports.getEventTargetNode = getEventTargetNode; exports.getOffsetHeight = getOffsetHeight; exports.getOffsetPos = getOffsetPos; exports.getPaddingTopBottomSize = getPaddingTopBottomSize; exports.getPropClass = getPropClass; exports.hasClass = hasClass; exports.ignoreWheelList = void 0; exports.isInside = isInside; exports.isNodeElement = isNodeElement; exports.isPx = isPx; exports.isScale = isScale; exports.removeClass = removeClass; exports.scrollToView = scrollToView; exports.setScrollLeft = setScrollLeft; exports.setScrollTop = setScrollTop; exports.triggerEvent = triggerEvent; exports.updateCellTitle = updateCellTitle; var _xeUtils = _interopRequireDefault(require("xe-utils")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var reClsMap = {}; var browse = _xeUtils.default.browse(); exports.browse = browse; function getPropClass(property, params) { return property ? _xeUtils.default.isFunction(property) ? property(params) : property : ''; } function getClsRE(cls) { if (!reClsMap[cls]) { reClsMap[cls] = new RegExp("(?:^|\\s)".concat(cls, "(?!\\S)"), 'g'); } return reClsMap[cls]; } function getNodeOffset(elem, container, rest) { if (elem) { var parentElem = elem.parentNode; rest.top += elem.offsetTop; rest.left += elem.offsetLeft; if (parentElem && parentElem !== document.documentElement && parentElem !== document.body) { rest.top -= parentElem.scrollTop; rest.left -= parentElem.scrollLeft; } if (container && (elem === container || elem.offsetParent === container) ? 0 : elem.offsetParent) { return getNodeOffset(elem.offsetParent, container, rest); } } return rest; } function isPx(val) { return val && /^\d+(px)?$/.test(val); } function isScale(val) { return val && /^\d+%$/.test(val); } function hasClass(elem, cls) { return elem && elem.className && elem.className.match && elem.className.match(getClsRE(cls)); } function removeClass(elem, cls) { if (elem && hasClass(elem, cls)) { elem.className = elem.className.replace(getClsRE(cls), ''); } } function addClass(elem, cls) { if (elem && !hasClass(elem, cls)) { removeClass(elem, cls); elem.className = "".concat(elem.className, " ").concat(cls); } } function getDomNode() { var documentElement = document.documentElement; var bodyElem = document.body; return { scrollTop: documentElement.scrollTop || bodyElem.scrollTop, scrollLeft: documentElement.scrollLeft || bodyElem.scrollLeft, visibleHeight: documentElement.clientHeight || bodyElem.clientHeight, visibleWidth: documentElement.clientWidth || bodyElem.clientWidth }; } function getOffsetHeight(elem) { return elem ? elem.offsetHeight : 0; } function getPaddingTopBottomSize(elem) { if (elem) { var computedStyle = getComputedStyle(elem); var paddingTop = _xeUtils.default.toNumber(computedStyle.paddingTop); var paddingBottom = _xeUtils.default.toNumber(computedStyle.paddingBottom); return paddingTop + paddingBottom; } return 0; } function setScrollTop(elem, scrollTop) { if (elem) { elem.scrollTop = scrollTop; } } function setScrollLeft(elem, scrollLeft) { if (elem) { elem.scrollLeft = scrollLeft; } } // export function setScrollLeftAndTop (elem: HTMLElement | null, scrollLeft: number, scrollTop: number) { // if (elem) { // elem.scrollLeft = scrollLeft // elem.scrollTop = scrollTop // } // } function updateCellTitle(overflowElem, column) { var content = column.type === 'html' ? overflowElem.innerText : overflowElem.textContent; if (overflowElem.getAttribute('title') !== content) { overflowElem.setAttribute('title', content); } } /** * 检查触发源是否属于目标节点 */ function getEventTargetNode(evnt, container, queryCls, queryMethod) { var targetElem; var target = evnt.target.shadowRoot && evnt.composed ? evnt.composedPath()[0] || evnt.target : evnt.target; while (target && target.nodeType && target !== document) { if (queryCls && hasClass(target, queryCls) && (!queryMethod || queryMethod(target))) { targetElem = target; } else if (target === container) { return { flag: queryCls ? !!targetElem : true, container: container, targetElem: targetElem }; } target = target.parentNode; } return { flag: false }; } /** * 获取元素相对于 document 的位置 */ function getOffsetPos(elem, container) { return getNodeOffset(elem, container, { left: 0, top: 0 }); } function getAbsolutePos(elem) { // 当主页面嵌套在iframe时,elem.getBoundingClientRect()计算在当前body内的边界距离,document.body.getBoundingClientRect计算body所在的边界距离 var bodyBounding = document.body.getBoundingClientRect(); var bounding = elem.getBoundingClientRect(); var boundingBottom = bounding.bottom; var boundingTop = bounding.top - bodyBounding.top; var boundingLeft = bounding.left - bodyBounding.left; var _a = getDomNode(), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft, visibleHeight = _a.visibleHeight, visibleWidth = _a.visibleWidth; return { boundingTop: boundingTop, boundingBottom: boundingBottom, top: scrollTop + boundingTop, boundingLeft: boundingLeft, left: scrollLeft + boundingLeft, visibleHeight: visibleHeight, visibleWidth: visibleWidth }; } var scrollIntoViewIfNeeded = 'scrollIntoViewIfNeeded'; var scrollIntoView = 'scrollIntoView'; function scrollToView(elem) { if (elem) { if (elem[scrollIntoViewIfNeeded]) { elem[scrollIntoViewIfNeeded](); } else if (elem[scrollIntoView]) { elem[scrollIntoView](); } } } function triggerEvent(targetElem, type) { if (targetElem) { targetElem.dispatchEvent(new Event(type)); } } function isNodeElement(elem) { return elem && elem.nodeType === 1; } function isInside(childNode, parentNode) { if (childNode.parentElement) { if (childNode.parentElement === parentNode) { return true; } else { return isInside(childNode.parentElement, parentNode); } } else { return false; } } /** * 递归使得元素和所有后代元素失去焦点(如果可以的话) */ var blurRecursive = function (elem) { if (elem) { elem === null || elem === void 0 ? void 0 : elem.blur(); var children = elem.children; for (var i = 0; i < children.length; i++) { blurRecursive(children[i]); } } }; exports.blurRecursive = blurRecursive; var ignoreWheelList = ['vxe-select', 'vxe-cascader', 'vxe-slider']; exports.ignoreWheelList = ignoreWheelList;