@blueking/vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 9.43 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.assembleColumn=assembleColumn,exports.calcTreeLine=calcTreeLine,exports.clearTableAllStatus=clearTableAllStatus,exports.clearTableDefaultStatus=clearTableDefaultStatus,exports.colToVisible=colToVisible,exports.convertHeaderColumnToRows=void 0,exports.createColumn=createColumn,exports.destroyColumn=destroyColumn,exports.getCellValue=getCellValue,exports.getColReMaxWidth=getColReMaxWidth,exports.getColReMinWidth=getColReMinWidth,exports.getOffsetSize=void 0,exports.getRefElem=getRefElem,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=void 0,exports.isColumnInfo=isColumnInfo,exports.mergeBodyMethod=mergeBodyMethod,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq,exports.watchColumn=watchColumn;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let getAllConvertColumns=(e,t)=>{let l=[];return e.forEach(e=>{e.parentId=t?t.id:null,e.visible&&(e.children&&e.children.length&&e.children.some(e=>e.visible)?(l.push(e),l.push(...getAllConvertColumns(e.children,e))):l.push(e))}),l},convertHeaderColumnToRows=e=>{let t=1,r=(l,e)=>{if(e&&(l.level=e.level+1,t<l.level)&&(t=l.level),l.children&&l.children.length&&l.children.some(e=>e.visible)){let t=0;l.children.forEach(e=>{e.visible&&(r(e,l),t+=e.colSpan)}),l.colSpan=t}else l.colSpan=1},l=(e.forEach(e=>{e.level=1,r(e)}),[]);for(let e=0;e<t;e++)l.push([]);return getAllConvertColumns(e).forEach(e=>{e.children&&e.children.length&&e.children.some(e=>e.visible)?e.rowSpan=1:e.rowSpan=t-e.level+1,l[e.level-1].push(e)}),l};function restoreScrollLocation(e,t,l){let r=e.internalData;return e.clearScroll().then(()=>{if(t||l)return r.lastScrollLeft=0,r.lastScrollTop=0,r.intoRunScroll=!1,r.inVirtualScroll=!1,r.inWheelScroll=!1,r.inHeaderScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,r.scrollRenderType="",e.scrollTo(t,l)})}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function getRowkey(e){var t=e.props,e=e.getComputeMaps().computeRowOpts,t=t.rowId,e=e.value;return t||e.keyField||"_X_ROW_KEY"}function getRowid(e,t){t=_xeUtils.default.get(t,getRowkey(e));return _xeUtils.default.eqNull(t)?"":encodeURIComponent(t)}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;let handleFieldOrColumn=(e,t)=>t?_xeUtils.default.isString(t)?e.getColumnByField(t):t:null;function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElementMarginWidth(e){var t,l;return e?(l=getComputedStyle(e),t=_xeUtils.default.toNumber(l.marginLeft),l=_xeUtils.default.toNumber(l.marginRight),e.offsetWidth+t+l):0}function queryCellElement(e,t){return e.querySelector(".vxe-cell"+t)}function toFilters(e){return e&&_xeUtils.default.isArray(e)?e.map(({label:e,value:t,data:l,resetValue:r,checked:o})=>({label:e,value:t,data:l,resetValue:r,checked:!!o,_checked:!!o})):e}function toTreePathSeq(e){return e.map((e,t)=>t%2==0?Number(e)+1:".").join("")}function getCellValue(e,t){return _xeUtils.default.get(e,t.field)}function setCellValue(e,t,l){return _xeUtils.default.set(e,t.field,l)}function getRefElem(e){if(e){e=e.value;if(e)return e.$el||e}return null}function getColReMaxWidth(e){var t=e.$table,t=t.getComputeMaps().computeResizableOpts,t=t.value.maxWidth;if(t){e=_xeUtils.default.isFunction(t)?t(e):t;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}return-1}function getColReMinWidth(e){var{$table:t,column:l,cell:r}=e,o=t.props,n=t.getComputeMaps().computeResizableOpts,n=n.value.minWidth;if(n){e=_xeUtils.default.isFunction(n)?n(e):n;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var i,a,u,n=o.showHeaderOverflow,{showHeaderOverflow:e,minWidth:o}=l,l=_xeUtils.default.isUndefined(e)||_xeUtils.default.isNull(e)?n:e,n="title"===l||(!0===l||"tooltip"===l)||"ellipsis"===l;let s=_xeUtils.default.floor(1.6*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize(queryCellElement(r,"")));if(n&&(e=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--drag-handle")),l=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--checkbox")),n=getElementMarginWidth(queryCellElement(r,">.vxe-cell--required-icon")),c=getElementMarginWidth(queryCellElement(r,">.vxe-cell--edit-icon")),i=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-prefix-icon")),a=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-suffix-icon")),u=getElementMarginWidth(queryCellElement(r,">.vxe-cell--sort")),r=getElementMarginWidth(queryCellElement(r,">.vxe-cell--filter")),s+=e+l+n+c+i+a+r+u),o){var c,e=t.getRefMaps().refTableBody,l=e.value,n=l?l.$el:null;if(n){if((0,_dom.isScale)(o))return c=(n.clientWidth-1)/100,Math.max(s,Math.floor(_xeUtils.default.toInteger(o)*c));if((0,_dom.isPx)(o))return Math.max(s,_xeUtils.default.toInteger(o))}}return s}function isColumnInfo(e){return e&&(e.constructor===_columnInfo.ColumnInfo||e instanceof _columnInfo.ColumnInfo)}function createColumn(e,t,l){return isColumnInfo(t)?t:(0,_vue.reactive)(new _columnInfo.ColumnInfo(e,t,l))}function watchColumn(l,e,r){Object.keys(e).forEach(t=>{(0,_vue.watch)(()=>e[t],e=>{r.update(t,e),l&&("filters"===t?(l.setFilter(r,e),l.handleUpdateDataQueue()):["visible","fixed","width","minWidth","maxWidth"].includes(t)&&l.handleRefreshColumnQueue())})})}function assembleColumn(e,t,l,r){var e=e.reactData,o=e.staticColumns,n=t.parentNode,r=r?r.columnConfig:null,r=r?r.children:o;n&&r&&(r.splice(_xeUtils.default.arrayIndexOf(n.children,t),0,l),e.staticColumns=o.slice(0))}function destroyColumn(e,t){var e=e.reactData,l=e.staticColumns,r=_xeUtils.default.findTree(l,e=>e.id===t.id,{children:"children"});r&&r.items.splice(r.index,1),e.staticColumns=l.slice(0)}function getRootColumn(e,t){var e=e.internalData,l=e.fullColumnIdData;if(!t)return null;let r=t.parentId;for(;l[r];){let e=l[r].column;if(!(r=e.parentId))return e}return t}exports.handleFieldOrColumn=handleFieldOrColumn;let lineOffsetSizes={mini:3,small:2,medium:1},countTreeExpand=(e,t)=>{let l=1;if(e){var r=t.$table,o=r.getComputeMaps().computeTreeOpts,o=o.value,{transform:n,mapChildrenField:i}=o,o=o.children||o.childrenField,a=e[n?i:o];if(a&&r.isTreeExpandByRow(e))for(let e=0;e<a.length;e++)l+=countTreeExpand(a[e],t)}return l},getOffsetSize=e=>{e=e.getComputeMaps().computeSize,e=e.value;return e&&lineOffsetSizes[e]||0};function calcTreeLine(e,t){var l=e.$table,r=l.reactData;let o=1;return t&&(o=countTreeExpand(t,e)),r.rowHeight*o-(t?1:12-getOffsetSize(l))}function mergeBodyMethod(t,l,r){for(let e=0;e<t.length;e++){var{row:o,col:n,rowspan:i,colspan:a}=t[e];if(-1<n&&-1<o&&i&&a){if(o===l&&n===r)return{rowspan:i,colspan:a};if(o<=l&&l<o+i&&n<=r&&r<n+a)return{rowspan:0,colspan:0}}}}function clearTableDefaultStatus(e){var{props:t,internalData:l}=e;return l.initStatus=!1,e.clearSort(),e.clearCurrentRow(),e.clearCurrentColumn(),e.clearRadioRow(),e.clearRadioReserve(),e.clearCheckboxRow(),e.clearCheckboxReserve(),e.clearRowExpand(),e.clearTreeExpand(),e.clearTreeExpandReserve(),e.clearPendingRow(),e.clearFilter&&e.clearFilter(),e.clearSelected&&(t.keyboardConfig||t.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&t.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function rowToVisible(l,r){var{reactData:e,internalData:o}=l,n=l.props.showOverflow,i=l.getRefMaps().refTableBody,{columnStore:e,scrollYLoad:t,rowHeight:a}=e,{afterFullData:u,fullAllDataRowIdData:s}=o,o=i.value,{leftList:i,rightList:e}=e,o=o?o.$el:null,c=getRowid(l,r);let d=0,f=(i.forEach(e=>{d+=e.renderWidth}),0);if(e.forEach(e=>{f+=e.renderWidth}),o){i=o.clientHeight,e=o.scrollTop,o=o.querySelector(`[rowid="${c}"]`);if(o){var m=o.offsetParent,m=o.offsetTop+(m?m.offsetTop:0),o=o.clientHeight;if(m<e||e+i<m)return l.scrollTo(null,m);if(i+e<=m+o)return l.scrollTo(null,e+o)}else if(t){if(n)return l.scrollTo(null,(l.findRowIndexOf(u,r)-1)*a);let t=0;m=s[c],o=m&&m.height||a;for(let e=0;e<u.length;e++){var h=u[e],g=getRowid(l,h);if(h===r||g===c)break;h=s[g];t+=h&&h.height||a}return t<e?l.scrollTo(null,t-d-1):l.scrollTo(null,t+o-(i-f-1))}}return Promise.resolve()}function colToVisible(o,n,t){var{reactData:i,internalData:a}=o,u=o.getRefMaps().refTableBody,{columnStore:i,scrollXLoad:s}=i,c=a.visibleColumn,{leftList:a,rightList:i}=i,u=u.value,u=u?u.$el:null;if(!n.fixed){let l=0,r=(a.forEach(e=>{l+=e.renderWidth}),0);if(i.forEach(e=>{r+=e.renderWidth}),u){a=u.clientWidth,i=u.scrollLeft;let e=null;if(t&&(t=getRowid(o,t),e=u.querySelector(`[rowid="${t}"] .`+n.id)),e=e||u.querySelector("."+n.id)){t=e.offsetParent,u=e.offsetLeft+(t?t.offsetLeft:0),t=e.clientWidth;if(u<i+l)return o.scrollTo(u-l-1);if(u+t-i>a-r)return o.scrollTo(u+t-(a-r-1))}else if(s){let t=0;u=n.renderWidth;for(let e=0;e<c.length;e++){var d=c[e];if(d===n||d.id===n.id)break;t+=d.renderWidth}return t<i?o.scrollTo(t-l-1):o.scrollTo(t+u-(a-r-1))}}}return Promise.resolve()}exports.getOffsetSize=getOffsetSize;