vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 10.2 kB
JavaScript
"use strict";const e=require("vue");require("../checkbox/index.cjs");require("../ellipsis/index.cjs");require("../radio/index.cjs");require("../renderer/index.cjs");require("../resize-observer/index.cjs");const V=require("@vexip-ui/config");require("./table-icon.vue.cjs");const Z=require("@vexip-ui/hooks"),h=require("@vexip-ui/utils"),v=require("./symbol.cjs"),_=require("../radio/radio.vue2.cjs"),ee=require("../checkbox/checkbox.vue2.cjs"),C=require("./table-icon.vue2.cjs"),ne=require("../resize-observer/resize-observer.cjs"),te=require("../ellipsis/ellipsis.vue2.cjs"),D=require("../renderer/renderer.cjs"),le=["scope","colspan","rowspan"],oe=e.defineComponent({name:"TableCell",__name:"table-cell",props:{row:{type:Object,default:()=>({})},rowIndex:{type:Number,default:-1},column:{type:Object,default:()=>({})},colIndex:{type:Number,default:-1},fixed:{type:String,default:null}},setup(n){const l=n,{state:r,getters:d,mutations:k}=e.inject(v.TABLE_STORE),a=e.inject(v.TABLE_ACTIONS),c=V.useNameHelper("table"),y=V.useIcons(),{isRtl:L}=Z.useRtl(),p=e.ref(0),M=e.ref(),b=e.computed(()=>l.column.index+f.value.colSpan>=r.columns.length),W=e.computed(()=>{let t=null;typeof r.cellClass=="function"?t=r.cellClass({row:l.row.data,rowIndex:l.rowIndex,column:l.column,columnIndex:l.column.index}):t=r.cellClass;const o=v.columnTypes.includes(l.column.type);return[c.be("cell"),{[c.bem("cell","typed")]:o,[c.bem("cell","center")]:o||l.column.textAlign==="center",[c.bem("cell","right")]:l.column.textAlign==="right",[c.bem("cell","last")]:b.value},l.column.class,t]}),E=e.computed(()=>l.fixed==="left"?r.leftFixedColumns:l.fixed==="right"?r.rightFixedColumns:r.normalColumns),f=e.computed(()=>r.cellSpanMap.get(l.fixed||"default").get(`${l.row.index},${l.column.index}`)||{colSpan:1,rowSpan:1}),$=e.computed(()=>typeof r.cellStyle=="function"?r.cellStyle({row:l.row.data,rowIndex:l.rowIndex,column:l.column,columnIndex:l.column.index}):r.cellStyle),O=e.computed(()=>{var T,q;const t=l.fixed==="left"?d.leftFixedWidths:l.fixed==="right"?d.rightFixedWidths:d.normalWidths,{colSpan:o,rowSpan:i}=f.value,u=!d.hasFixedColumn,s=(u||((T=E.value[0])==null?void 0:T.fixed)==="left")&&r.sidePadding[0]||0,m=(u||((q=h.getLast(E.value))==null?void 0:q.fixed)==="right")&&r.sidePadding[1]||0,x=t[l.colIndex+o]-t[l.colIndex];let B;return i>1&&r.heightBITree&&(B=r.heightBITree.sum(l.row.listIndex+i)-r.heightBITree.sum(l.row.listIndex)),[l.column.style||"",$.value,{display:!o||!i?"none":void 0,width:`${(l.column.index?0:s)+(b.value?m:0)+x}px`,height:B?`${B}px`:void 0,visibility:l.column.fixed&&!l.fixed?"hidden":void 0,borderRightWidth:!r.border&&o>1&&l.colIndex+o>=t.length-1?0:void 0,borderBottomWidth:i>1&&l.rowIndex+i>=d.processedData.length?0:void 0,transform:`translate3d(${L.value?"-":""}${(l.column.index?s:0)+t[l.colIndex]}px, 0, 0)`}]}),P=e.computed(()=>{let t;return typeof r.cellAttrs=="function"?t=r.cellAttrs({row:l.row.data,rowIndex:l.rowIndex,column:l.column,columnIndex:l.colIndex}):t=r.cellAttrs,{...l.column.attrs||{},...t||{}}}),g=e.computed(()=>h.isFunction(l.column.formatter)?l.column.formatter:v.noopFormatter),j=e.computed(()=>d.usingTree&&(d.indentedColumn?l.column.key===d.indentedColumn.key:l.column.first));e.watchEffect(()=>{F(l.column)||k.setCellHeight(l.row.key,l.column.key,p.value)});function I(t){return t.type==="selection"}function S(t){return t.type==="order"}function z(t){return t.type==="expand"}function R(t){return t.type==="drag"}function F(t){return I(t)||S(t)||z(t)||R(t)}function w(t){return{row:l.row.data,key:l.row.key,rowIndex:l.rowIndex,column:l.column,columnIndex:l.colIndex,event:t}}function H(t){a==null||a.emitCellEvent("Enter",w(t))}function A(t){a==null||a.emitCellEvent("Leave",w(t))}function G(t){a==null||a.emitCellEvent("Click",w(t))}function J(t){a==null||a.emitCellEvent("Dblclick",w(t))}function K(t){a==null||a.emitCellEvent("Contextmenu",w(t))}function N(t,o,i=!1){if(!d.disableCheckRows.has(t.key)){const u=!t.checked,{data:s,key:m,index:x}=t;k.handleCheck(m,u,i),a.emitRowCheck({row:s,key:m,index:x,event:o,checked:u})}}function Q(t,o){if(!d.disableExpandRows.has(t.key)){const i=!t.expanded,{data:u,key:s,index:m}=t;k.setRowProp(s,"expandAnimate",!0),e.nextTick(()=>{k.handleExpand(s,i),a.emitRowExpand({row:u,key:s,index:m,event:o,expanded:i})})}}function U(t){d.disableDragRows.has(t.key)||k.handleDrag(t.key,!0)}function X(t,o){var x;if(!((x=t.children)!=null&&x.length))return;const i=!t.treeExpanded,{data:u,key:s,index:m}=t;a.runInLocked(),k.setTreeExpanded(t.key,i),a.emitRowExpand({row:u,key:s,index:m,event:o,expanded:i})}function Y(t){var o,i;p.value=(((i=(o=t.borderBoxSize)==null?void 0:o[0])==null?void 0:i.blockSize)??t.contentRect.height)+r.borderWidth}return(t,o)=>{var i;return e.openBlock(),e.createElementBlock("div",e.mergeProps(P.value,{ref_key:"wrapper",ref:M,class:W.value,role:"cell",scope:n.column.first?"row":void 0,colspan:f.value.colSpan!==1?f.value.colSpan:void 0,rowspan:f.value.rowSpan!==1?f.value.rowSpan:void 0,style:O.value,onMouseenter:H,onMouseleave:A,onClick:G,onDblclick:J,onContextmenu:K}),[n.column.index===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(c).be("side-pad")),role:"none","aria-hidden":""},null,2)):e.createCommentVNode("",!0),F(n.column)?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(c).be("content"))},[I(n.column)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n.column.singleSelect?(e.openBlock(),e.createBlock(e.unref(_),{key:0,inherit:"",label:n.row.key,value:n.row.checked?n.row.key:null,class:e.normalizeClass(e.unref(c).be("selection")),size:n.column.selectionSize||"default",disabled:e.unref(d).disableCheckRows.has(n.row.key),onClick:o[0]||(o[0]=e.withModifiers(u=>N(n.row,u,!0),["prevent","stop"]))},null,8,["label","value","class","size","disabled"])):(e.openBlock(),e.createBlock(e.unref(ee),{key:1,inherit:"",class:e.normalizeClass(e.unref(c).be("selection")),checked:n.row.checked,size:n.column.selectionSize||"default",disabled:e.unref(d).disableCheckRows.has(n.row.key),partial:n.row.partial,control:!!((i=n.row.children)!=null&&i.length),onClick:o[1]||(o[1]=e.withModifiers(u=>N(n.row,u),["prevent","stop"]))},null,8,["class","checked","size","disabled","partial","control"]))],64)):S(n.column)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(c).be("order"))},e.toDisplayString(n.column.orderLabel&&n.column.orderLabel(n.column.truthIndex?n.row.index:n.rowIndex)),3)):z(n.column)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.unref(d).disableExpandRows.has(n.row.key)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass({[e.unref(c).be("expand")]:!0,[e.unref(c).bem("expand","active")]:n.row.expanded}),onClick:o[2]||(o[2]=e.withModifiers(u=>Q(n.row,u),["stop"]))},[e.createVNode(C,{name:"expand",origin:e.unref(y).angleRight},null,8,["origin"])],2))],64)):R(n.column)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.unref(d).disableDragRows.has(n.row.key)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(e.unref(c).be("dragger")),onMousedown:o[3]||(o[3]=u=>U(n.row))},[e.createVNode(C,{name:"dragger",origin:e.unref(y).dragger},null,8,["origin"])],34))],64)):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createBlock(e.unref(ne),{key:2,"on-resize":Y},{default:e.withCtx(()=>{var u;return[e.createElementVNode("span",{class:e.normalizeClass({[e.unref(c).be("content")]:!0,[e.unref(c).bem("content","ellipsis")]:n.column.ellipsis??e.unref(r).ellipsis})},[j.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(c).be("tree-append"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(c).be("pad")),style:e.normalizeStyle({[e.unref(c).cv("row-depth")]:n.row.depth})},null,6),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(c).be("tree-expand"),!((u=n.row.children)!=null&&u.length)&&e.unref(c).bem("tree-expand","hidden")]),onClick:o[4]||(o[4]=s=>X(n.row,s))},[n.row.treeExpanded?(e.openBlock(),e.createBlock(C,{key:0,name:"minus",origin:e.unref(y).minusSquare},null,8,["origin"])):(e.openBlock(),e.createBlock(C,{key:1,name:"plus",origin:e.unref(y).plusSquare},null,8,["origin"]))],2)],2)):e.createCommentVNode("",!0),n.column.ellipsis??e.unref(r).ellipsis?(e.openBlock(),e.createBlock(e.unref(te),{key:1,inherit:"",class:e.normalizeClass(e.unref(c).be("ellipsis")),"tip-disabled":e.unref(r).barScrolling,"tooltip-theme":e.unref(r).tooltipTheme,"tip-max-width":e.unref(r).tooltipWidth},{default:e.withCtx(()=>[e.unref(h.isFunction)(n.column.renderer)?(e.openBlock(),e.createBlock(e.unref(D),{key:0,renderer:n.column.renderer,data:{row:n.row.data,rowIndex:n.rowIndex,column:n.column,columnIndex:n.column.index}},null,8,["renderer","data"])):e.unref(h.isFunction)(n.column.accessor)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(g.value(n.column.accessor(n.row.data,n.rowIndex))),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(g.value(n.row.data[n.column.key])),1)],64))]),_:1},8,["class","tip-disabled","tooltip-theme","tip-max-width"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.unref(h.isFunction)(n.column.renderer)?(e.openBlock(),e.createBlock(e.unref(D),{key:0,renderer:n.column.renderer,data:{row:n.row.data,rowIndex:n.rowIndex,column:n.column,columnIndex:n.column.index}},null,8,["renderer","data"])):e.unref(h.isFunction)(n.column.accessor)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(g.value(n.column.accessor(n.row.data,n.rowIndex))),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(g.value(n.row.data[n.column.key])),1)],64))],64))],2)]}),_:1})),b.value?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass([e.unref(c).be("side-pad"),e.unref(c).bem("side-pad","right")]),role:"none","aria-hidden":""},null,2)):e.createCommentVNode("",!0)],16,le)}}});module.exports=oe;
//# sourceMappingURL=table-cell.vue2.cjs.map