Files
vxe-table/lib/tools/src/dom.min.js
2019-12-27 17:15:56 +08:00

1 line
3.9 KiB
JavaScript

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.DomTools=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils/methods/xe-utils")),_utils=_interopRequireDefault(require("./utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var browse=_xeUtils.default.browse(),htmlElem=browse.isDoc?document.querySelector("html"):0,bodyElem=browse.isDoc?document.body:0;function getClsRE(e){return reClsMap[e]||(reClsMap[e]=new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g")),reClsMap[e]}var reClsMap={},DomTools={browse:browse,isPx:function(e){return e&&/^\d+(px)?$/.test(e)},isScale:function(e){return e&&/^\d+%$/.test(e)},hasClass:function(e,t){return e&&e.className&&e.className.match&&e.className.match(getClsRE(t))},removeClass:function(e,t){e&&DomTools.hasClass(e,t)&&(e.className=e.className.replace(getClsRE(t),""))},addClass:function(e,t){e&&!DomTools.hasClass(e,t)&&(DomTools.removeClass(e,t),e.className="".concat(e.className," ").concat(t))},updateCellTitle:function(e){var t=e.currentTarget.querySelector(".vxe-cell"),o=t.innerText;t.getAttribute("title")!==o&&t.setAttribute("title",o)},rowToVisible:function(e,t){var o=e.$refs.tableBody.$el,r=o.querySelector('[data-rowid="'.concat(_utils.default.getRowid(e,t),'"]'));if(r){var l=o.clientHeight,n=o.scrollTop,s=r.offsetTop+(r.offsetParent?r.offsetParent.offsetTop:0),a=r.clientHeight;if(s<n||n+l<s)return e.scrollTo(null,s);if(l+n<=s+a)return e.scrollTo(null,n+a)}else if(e.scrollYLoad)return e.scrollTo(null,(e.afterFullData.indexOf(t)-1)*e.scrollYStore.rowHeight);return Promise.resolve()},colToVisible:function(e,t){var o=e.$refs.tableBody.$el,r=o.querySelector(".".concat(t.id));if(r){var l=o.clientWidth,n=o.scrollLeft,s=r.offsetLeft+(r.offsetParent?r.offsetParent.offsetLeft:0),a=r.clientWidth;if(s<n||n+l<s)return e.scrollTo(s);if(l+n<=s+a)return e.scrollTo(n+a)}else if(e.scrollXLoad){for(var i=e.visibleColumn,f=0,c=0;c<i.length&&i[c]!==t;c++)f+=i[c].renderWidth;return e.scrollTo(f)}return Promise.resolve()},getDomNode:function(){var e=document.documentElement,t=document.body;return{scrollTop:e.scrollTop||t.scrollTop,scrollLeft:e.scrollLeft||t.scrollLeft,visibleHeight:e.clientHeight||t.clientHeight,visibleWidth:e.clientWidth||t.clientWidth}},getEventTargetNode:function(e,t,o,r){for(var l,n=e.target;n&&n.nodeType&&n!==document;){if(o&&DomTools.hasClass(n,o)&&(!r||r(n)))l=n;else if(n===t)return{flag:!o||!!l,container:t,targetElem:l};n=n.parentNode}return{flag:!1}},getOffsetPos:function(e,t){return getNodeOffset(e,t,{left:0,top:0})},getAbsolutePos:function(e){var t=e.getBoundingClientRect(),o=DomTools.getDomNode(),r=o.scrollTop,l=o.scrollLeft;return{top:r+t.top,left:l+t.left}},getCellNodeIndex:function(e){var t=e.parentNode;return{columnIndex:_xeUtils.default.arrayIndexOf(t.children,e),rowIndex:_xeUtils.default.arrayIndexOf(t.parentNode.children,t)}},getRowNodes:function(e,t,o){for(var r=t.columnIndex,l=t.rowIndex,n=o.columnIndex,s=o.rowIndex,a=[],i=Math.min(l,s),f=Math.max(l,s);i<=f;i++){for(var c=[],u=e[i],d=Math.min(r,n),m=Math.max(r,n);d<=m;d++){var p=u.children[d];c.push(p)}a.push(c)}return a},getCellIndexs:function(e){var t=e.parentNode,o=t.getAttribute("data-rowid"),r=[].indexOf.call(t.children,e);return{rowid:o,rowIndex:[].indexOf.call(t.parentNode.children,t),columnIndex:r}},getCell:function(e,t){var o=t.row,r=t.column,l=_utils.default.getRowid(e,o);return(e.$refs["".concat(r.fixed||"table","Body")]||e.$refs.tableBody).$el.querySelector('.vxe-body--row[data-rowid="'.concat(l,'"] .').concat(r.id))},toView:function(e){var t="scrollIntoViewIfNeeded",o="scrollIntoView";e&&(e[t]?e[t]():e[o]&&e[o]())}};function getNodeOffset(e,t,o){if(e){var r=e.parentNode;if(o.top+=e.offsetTop,o.left+=e.offsetLeft,r&&r!==htmlElem&&r!==bodyElem&&(o.top-=r.scrollTop,o.left-=r.scrollLeft),(!t||e!==t&&e.offsetParent!==t)&&e.offsetParent)return getNodeOffset(e.offsetParent,t,o)}return o}var _default=exports.DomTools=DomTools;exports.default=_default;