vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 5.68 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getTargetOffset(e,t){var o,l,n=0,r=0,c=!_dom.browse.firefox&&(0,_dom.hasClass)(e,"vxe-checkbox--label");for(c&&(o=getComputedStyle(e),n-=_xeUtils.default.toNumber(o.paddingTop),r-=_xeUtils.default.toNumber(o.paddingLeft));e&&e!==t;)n+=e.offsetTop,r+=e.offsetLeft,e=e.offsetParent,c&&(l=getComputedStyle(e),n-=_xeUtils.default.toNumber(l.paddingTop),r-=_xeUtils.default.toNumber(l.paddingLeft));return{offsetTop:n,offsetLeft:r}}var tableKeyboardHook={setupTable:function(k){var f=k.props,y=k.reactData,H=k.internalData,E=k.getRefMaps().refElem,e=k.getComputeMaps(),g=e.computeEditOpts,u=e.computeCheckboxOpts,i=e.computeMouseOpts,d=e.computeTreeOpts;function s(e,a){var t,u,i,d,s,o,l,f,g,m,h,n,p,v,x,c,w,b,C,T,R,_,I,r=a.column,M=a.cell;"checkbox"===r.type&&(t=E.value,n=H.elemStore,u=e.clientX,i=e.clientY,r=n["".concat(r.fixed||"main","-body-wrapper")]||n["main-body-wrapper"],d=r?r.value:null)&&(s=d.querySelector(".vxe-table--checkbox-range"),o=document.onmousemove,l=document.onmouseup,f=M.parentNode,g=k.getCheckboxRecords(),m=[],h=1,n=getTargetOffset(e.target,d),p=n.offsetTop+e.offsetY,v=n.offsetLeft+e.offsetX,x=d.scrollTop,c=f.offsetHeight,w=null,C=1,T=function(e,t){k.dispatchEvent("checkbox-range-".concat(e),{records:k.getCheckboxRecords(),reserves:k.getCheckboxReserveRecords()},t)},R=function(e){var t=e.clientX,o=e.clientY,t=t-u,o=o-i+(d.scrollTop-x),l=Math.abs(o),n=Math.abs(t),r=p,c=v,t=(o<h?(r+=o)<h&&(r=h,l=p):l=Math.min(l,d.scrollHeight-p-h),t<h?(c+=t,v<n&&(c=h,n=v)):n=Math.min(n,d.clientWidth-v-h),s.style.height="".concat(l,"px"),s.style.width="".concat(n,"px"),s.style.left="".concat(c,"px"),s.style.top="".concat(r,"px"),s.style.display="block",function(e,t,o){var l=0,n=[],r=0<o,c=0<o?o:Math.abs(o)+t.offsetHeight,o=y.scrollYLoad,a=H.afterFullData,u=H.scrollYStore;if(o)o=k.getVTRowIndex(e.row),n=r?a.slice(o,o+Math.ceil(c/u.rowHeight)):a.slice(o-Math.floor(c/u.rowHeight)+1,o+1);else for(var i=r?"next":"previous";t&&l<c;){var d=k.getRowNode(t);d&&(n.push(d.item),l+=t.offsetHeight,t=t["".concat(i,"ElementSibling")])}return n}(a,f,o<h?-l:l));10<l&&t.length!==m.length&&(m=t,e.ctrlKey?t.forEach(function(e){k.handleSelectRow({row:e},-1===g.indexOf(e))}):(k.setAllCheckboxRow(!1),k.handleCheckedCheckboxRow(t,!0,!1)),T("change",e))},_=function(){clearTimeout(w),w=null},(b=!(I=function(r){_(),w=setTimeout(function(){var e,t,o,l,n;w&&(e=d.scrollLeft,t=d.scrollTop,o=d.clientHeight,l=d.scrollHeight,n=Math.ceil(50*C/c),b?t+o<l?(k.scrollTo(e,t+n),I(r),R(r)):_():t?(k.scrollTo(e,t-n),I(r),R(r)):_())},50)}),_dom.addClass)(t,"drag--range"),document.onmousemove=function(e){e.preventDefault(),e.stopPropagation();var t=e.clientY,o=(0,_dom.getAbsolutePos)(d).boundingTop;t<o?(b=!1,C=o-t,w||I(e)):t>o+d.clientHeight?(b=!0,C=t-o-d.clientHeight,w||I(e)):w&&_(),R(e)},document.onmouseup=function(e){_(),(0,_dom.removeClass)(t,"drag--range"),s.removeAttribute("style"),document.onmousemove=o,document.onmouseup=l,T("end",e)},T("start",e))}return{moveTabSelected:function(e,t,o){var l,n,r,c=f.editConfig,a=H.afterFullData,u=H.visibleColumn,i=g.value,d=Object.assign({},e),e=k.getVTRowIndex(d.row),s=k.getVTColumnIndex(d.column),t=(o.preventDefault(),t?s<=0?0<e&&(l=a[n=e-1],r=u.length-1):r=s-1:s>=u.length-1?e<a.length-1&&(l=a[n=e+1],r=0):r=s+1,u[r]);t&&(l?(d.rowIndex=n,d.row=l):d.rowIndex=e,d.columnIndex=r,d.column=t,d.cell=k.getCell(d.row,d.column),c?"click"!==i.trigger&&"dblclick"!==i.trigger||("row"===i.mode?k.handleActived(d,o):k.scrollToRow(d.row,d.column).then(function(){return k.handleSelected(d,o)})):k.scrollToRow(d.row,d.column).then(function(){return k.handleSelected(d,o)}))},moveCurrentRow:function(e,t,o){var l,n,r=f.treeConfig,c=y.currentRow,a=H.afterFullData,u=d.value,u=u.children||u.childrenField;o.preventDefault(),c?r?(u=(r=_xeUtils.default.findTree(a,function(e){return e===c},{children:u})).index,r=r.items,e&&0<u?l=r[u-1]:t&&u<r.length-1&&(l=r[u+1])):(r=k.getVTRowIndex(c),e&&0<r?l=a[r-1]:t&&r<a.length-1&&(l=a[r+1])):l=a[0],l&&(n={$table:k,row:l,rowIndex:k.getRowIndex(l),$rowIndex:k.getVMRowIndex(l)},k.scrollToRow(l).then(function(){return k.triggerCurrentRowEvent(o,n)}))},moveSelected:function(e,t,o,l,n,r){var c=H.afterFullData,a=H.visibleColumn,u=Object.assign({},e),e=k.getVTRowIndex(u.row),i=k.getVTColumnIndex(u.column);r.preventDefault(),o&&0<e?(u.rowIndex=e-1,u.row=c[u.rowIndex]):n&&e<c.length-1?(u.rowIndex=e+1,u.row=c[u.rowIndex]):t&&i?(u.columnIndex=i-1,u.column=a[u.columnIndex]):l&&i<a.length-1&&(u.columnIndex=i+1,u.column=a[u.columnIndex]),k.scrollToRow(u.row,u.column).then(function(){u.cell=k.getCell(u.row,u.column),k.handleSelected(u,r)})},triggerHeaderCellMousedownEvent:function(e,t){var o,l=f.mouseConfig,n=i.value;l&&n.area&&k.handleHeaderCellAreaEvent&&(l=e.currentTarget,n=(0,_dom.getEventTargetNode)(e,l,"vxe-cell--sort").flag,o=(0,_dom.getEventTargetNode)(e,l,"vxe-cell--filter").flag,k.handleHeaderCellAreaEvent(e,Object.assign({cell:l,triggerSort:n,triggerFilter:o},t))),k.focus(),k.closeMenu&&k.closeMenu()},triggerCellMousedownEvent:function(e,t){var o=e.currentTarget;t.cell=o,function(e,t){var o=f.editConfig,l=f.checkboxConfig,n=f.mouseConfig,r=u.value,c=i.value,a=g.value;if(n&&c.area&&k.handleCellAreaEvent)return k.handleCellAreaEvent(e,t);l&&r.range&&s(e,t),n&&c.selected&&(o&&"cell"!==a.mode||k.handleSelected(t,e))}(e,t),k.focus(),k.closeFilter(),k.closeMenu&&k.closeMenu()}}}},_default=tableKeyboardHook;exports.default=_default;