vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
217 lines (216 loc) • 6.87 kB
JavaScript
;
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;