vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 3.65 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.DomTools=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_utils=_interopRequireDefault(require("./utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var getRowid=_utils.default.getRowid,browse=_ctor.default.browse(),htmlElem=browse.isDoc?document.querySelector("html"):0,bodyElem=browse.isDoc?document.body:0,reClsMap={};function getClsRE(e){return reClsMap[e]||(reClsMap[e]=new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g")),reClsMap[e]}function getNodeOffset(e,t,o){if(e){var l=e.parentNode;if(o.top+=e.offsetTop,o.left+=e.offsetLeft,l&&l!==htmlElem&&l!==bodyElem&&(o.top-=l.scrollTop,o.left-=l.scrollLeft),(!t||e!==t&&e.offsetParent!==t)&&e.offsetParent)return getNodeOffset(e.offsetParent,t,o)}return o}function isScale(e){return e&&/^\d+%$/.test(e)}function hasClass(e,t){return e&&e.className&&e.className.match&&e.className.match(getClsRE(t))}function removeClass(e,t){e&&hasClass(e,t)&&(e.className=e.className.replace(getClsRE(t),""))}function getDomNode(){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}}var DomTools={browse:browse,isPx:function(e){return e&&/^\d+(px)?$/.test(e)},isScale:isScale,hasClass:hasClass,removeClass:removeClass,addClass:function(e,t){e&&!hasClass(e,t)&&(removeClass(e,t),e.className="".concat(e.className," ").concat(t))},updateCellTitle:function(e,t){var o="html"===t.type?e.innerText:e.textContent;e.getAttribute("title")!==o&&e.setAttribute("title",o)},rowToVisible:function(e,t){var o=e.$refs.tableBody.$el,l=o.querySelector('[data-rowid="'.concat(getRowid(e,t),'"]'));if(l){var r=o.clientHeight,s=o.scrollTop,n=l.offsetTop+(l.offsetParent?l.offsetParent.offsetTop:0),i=l.clientHeight;if(n<s||s+r<n)return e.scrollTo(null,n);if(r+s<=n+i)return e.scrollTo(null,s+i)}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,l=o.querySelector(".".concat(t.id));if(l){var r=o.clientWidth,s=o.scrollLeft,n=l.offsetLeft+(l.offsetParent?l.offsetParent.offsetLeft:0),i=l.clientWidth;if(n<s||s+r<n)return e.scrollTo(n);if(r+s<=n+i)return e.scrollTo(s+i)}else if(e.scrollXLoad){for(var a=e.visibleColumn,f=0,c=0;c<a.length&&a[c]!==t;c++)f+=a[c].renderWidth;return e.scrollTo(f)}return Promise.resolve()},getDomNode:getDomNode,getEventTargetNode:function(e,t,o,l){for(var r,s=e.target;s&&s.nodeType&&s!==document;){if(o&&hasClass(s,o)&&(!l||l(s)))r=s;else if(s===t)return{flag:!o||!!r,container:t,targetElem:r};s=s.parentNode}return{flag:!1}},getOffsetPos:function(e,t){return getNodeOffset(e,t,{left:0,top:0})},getAbsolutePos:function(e){var t=e.getBoundingClientRect(),o=t.top,l=t.left,r=getDomNode();return{boundingTop:o,top:r.scrollTop+o,boundingLeft:l,left:r.scrollLeft+l,visibleHeight:r.visibleHeight,visibleWidth:r.visibleWidth}},toView:function(e){var t="scrollIntoViewIfNeeded",o="scrollIntoView";e&&(e[t]?e[t]():e[o]&&e[o]())},triggerEvent:function(e,t){var o;"function"==typeof Event?o=new Event(t):(o=document.createEvent("Event")).initEvent(t,!0,!0),e.dispatchEvent(o)},calcHeight:function(e,t){var o=e[t],l=0;if(o)if("auto"===o)l=e.parentHeight;else{var r=e.getExcludeHeight();l=isScale(o)?Math.floor((_ctor.default.toInteger(o)||1)/100*e.parentHeight):_ctor.default.toNumber(o),l=Math.max(40,l-r)}return l}},_default=exports.DomTools=DomTools;exports.default=_default;