vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 12.3 kB
JavaScript
;const e=require("vue");require("../button/index.cjs");require("../checkbox/index.cjs");require("../ellipsis/index.cjs");require("../renderer/index.cjs");require("../resize-observer/index.cjs");require("../tooltip/index.cjs");const H=require("@vexip-ui/config");require("./table-icon.vue.cjs");const W=require("@vexip-ui/hooks"),p=require("@vexip-ui/utils"),w=require("./symbol.cjs"),j=require("../checkbox/checkbox.vue2.cjs"),he=require("../resize-observer/resize-observer.cjs"),ke=require("../ellipsis/ellipsis.vue2.cjs"),b=require("../renderer/renderer.cjs"),V=require("./table-icon.vue2.cjs"),pe=require("../tooltip/tooltip.cjs"),P=require("../button/button.cjs"),ge=["colspan","rowspan","aria-sort"],xe=["onClick"],X=10,be=e.defineComponent({name:"TableHeadCell",__name:"table-head-cell",props:{column:{type:Object,default:()=>({})},index:{type:Number,default:-1},row:{type:Object,default:()=>({})},rowIndex:{type:Number,default:0},fixed:{type:String,default:null}},setup(a){const l=a,{state:r,getters:h,mutations:u}=e.inject(w.TABLE_STORE),c=e.inject(w.TABLE_ACTIONS),i=H.useNameHelper("table"),S=e.toRef(r,"locale"),z=H.useIcons(),{isRtl:I}=W.useRtl(),g=e.ref(!1),q=e.toRef(r,"colResizable"),G=e.computed(()=>r.colResizing),R=e.ref(),d=e.computed(()=>u.isGroupColumn(l.column)),D=e.computed(()=>l.fixed==="left"?r.leftFixedColumns:l.fixed==="right"?r.rightFixedColumns:r.normalColumns),k=e.computed(()=>r.cellSpanMap.get(l.fixed||"default").get(`h${l.rowIndex},${l.index}`)||{colSpan:1,rowSpan:1}),E=e.computed(()=>d.value?l.column.last:l.column.index+k.value.colSpan>=r.columns.length);let C=0;function T(t,n=!1){const o=Math.max(C+(t.isRtl?-1:1)*t.deltaX,X);return!n&&u.handleColumnResize(r.columns.slice(l.column.index,l.column.index+k.value.colSpan).map(m=>m.key),o),o}const{target:U}=W.useMoving({capture:!1,onStart:(t,n)=>{if(!q.value||G.value||d.value)return!1;const o=c.getTableElement();if(!o||!R.value)return!1;t.xStart=t.clientX-o.getBoundingClientRect().left,t.isRtl=I.value,C=R.value.getBoundingClientRect().width,u.setColumnResizing(!0),u.setResizeLeft(t.xStart),c.emitColResize("Start",{...v(n),width:C})},onMove:(t,n)=>{t.xEnd=Math.max(t.xStart-C+X,t.xEnd),u.setResizeLeft(t.xEnd),c.emitColResize("Move",{...v(n),width:T(t,r.colResizable!=="responsive")})},onEnd:(t,n)=>{u.setColumnResizing(!1),c.emitColResize("End",{...v(n),width:T(t)})}}),F=e.computed(()=>w.columnTypes.includes(l.column.type)),J=e.computed(()=>{let t=null;return typeof r.headClass=="function"?t=r.headClass({column:l.column,index:l.column.colIndex,rowIndex:l.rowIndex}):t=r.headClass,[i.be("head-cell"),{[i.bem("head-cell","group")]:d.value,[i.bem("head-cell","typed")]:F.value,[i.bem("head-cell","center")]:F.value||l.column.textAlign==="center",[i.bem("head-cell","right")]:l.column.textAlign==="right",[i.bem("head-cell","last")]:E.value},l.column.class,t]}),K=e.computed(()=>typeof r.headStyle=="function"?r.headStyle({column:l.column,index:l.column.colIndex,rowIndex:l.rowIndex}):r.headStyle),Q=e.computed(()=>{var L,$,O;const t=l.fixed==="left"?h.leftFixedWidths:l.fixed==="right"?h.rightFixedWidths:h.normalWidths,{colSpan:n,rowSpan:o}=k.value,m=!h.hasFixedColumn,x=(m||((L=D.value[0])==null?void 0:L.fixed)==="left")&&r.sidePadding[0]||0,fe=(m||(($=p.getLast(D.value))==null?void 0:$.fixed)==="right")&&r.sidePadding[1]||0,ve=t[l.index+n]-t[l.index];let B;if(o>1){B=0;for(let N=0;N<o;++N)B+=((O=r.rowMap.get(`${w.TABLE_HEAD_PREFIX}${l.rowIndex+N}`))==null?void 0:O.height)??0}return[l.column.style||"",K.value,{display:n?void 0:"none",width:`${(l.column.index?0:x)+(E.value?fe:0)+ve}px`,height:B?`${B}px`:void 0,visibility:l.column.fixed&&!l.fixed?"hidden":void 0,borderRightWidth:!r.border&&n>1&&l.index+n>=t.length-1?0:void 0,transform:`translate3d(${I.value?"-":""}${(l.column.index?x:0)+t[l.index]}px, 0, 0)`}]}),Y=e.computed(()=>{let t;return typeof r.headAttrs=="function"?t=r.headAttrs({column:l.column,index:l.column.colIndex,rowIndex:l.rowIndex}):t=r.headAttrs,{...l.column.attrs||{},...t||{}}}),f=e.computed(()=>r.sorters.get(l.column.key)||{}),s=e.computed(()=>r.filters.get(l.column.key)||{}),Z=e.computed(()=>{const t=s.value.options??[];for(let n=0,o=t.length;n<o;++n)if(t[n].active)return!0;return!1}),_=e.computed(()=>{if(!A(l.column))return!1;const t=Object.values(h.disableCheckRows);return h.processedData.length===t.length&&!Object.values(h.disableCheckRows).includes(!1)}),ee=()=>p.nextFrameOnce(c.refreshXScroll);function A(t){return!d.value&&t.type==="selection"}function v(t){return{column:l.column,index:l.column.colIndex,event:t}}function te(t){c==null||c.emitHeadEvent("Enter",v(t))}function le(t){c==null||c.emitHeadEvent("Leave",v(t))}function ne(t){c==null||c.emitHeadEvent("Click",v(t))}function re(t){c==null||c.emitHeadEvent("Dblclick",v(t))}function oe(t){c==null||c.emitHeadEvent("Contextmenu",v(t))}function ie(){const t=l.column.key,n=f.value.type==="asc"?null:"asc";u.handleSort(t,n),c.emitRowSort()}function ae(){const t=l.column.key,n=f.value.type==="desc"?null:"desc";u.handleSort(t,n),c.emitRowSort()}function y(t){u.handleFilter(l.column.key,t)}function ce(t,n){u.toggleFilterItemActive({key:l.column.key,value:t,active:n,disableOthers:!0}),y(t),g.value=!1,c.emitRowFilter()}function ue(t,n){u.toggleFilterItemActive({key:l.column.key,value:t,active:n})}function se(){const t=s.value.options??[],n=[];for(let o=0,m=t.length;o<m;++o){const x=t[o];x.active&&n.push(x.value)}y(n),g.value=!1,c.emitRowFilter()}function M(){g.value=!1,y(null),u.toggleFilterItemActive({key:l.column.key,value:null,disableOthers:!0}),c.emitRowFilter()}function de(){u.handleCheckAll(),c.emitAllRowCheck(r.checkedAll,r.partial)}function me(t){var n,o;u.setCellHeight(l.row.key,l.column.key,(((o=(n=t.borderBoxSize)==null?void 0:n[0])==null?void 0:o.blockSize)??t.contentRect.height)+r.borderWidth)}return(t,n)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(Y.value,{ref_key:"wrapper",ref:R,class:J.value,role:"columnheader",scope:"col",colspan:k.value.colSpan!==1?k.value.colSpan:void 0,rowspan:k.value.rowSpan!==1?k.value.rowSpan:void 0,style:Q.value,"aria-sort":!d.value&&f.value.able?f.value.type?f.value.type==="asc"?"ascending":"descending":"none":void 0,onMouseenter:te,onMouseleave:le,onClick:ne,onDblclick:re,onContextmenu:oe,onTransitionend:ee}),[a.column.index===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(i).be("side-pad")),role:"none","aria-hidden":""},null,2)):e.createCommentVNode("",!0),A(a.column)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.column.singleSelect?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(i).be("content"))},[e.createVNode(e.unref(j),{inherit:"",control:"",class:e.normalizeClass(e.unref(i).be("selection")),checked:e.unref(r).checkedAll,partial:e.unref(r).partial,disabled:_.value,size:a.column.selectionSize||"default",onClick:e.withModifiers(de,["prevent"])},null,8,["class","checked","partial","disabled","size"])],2))],64)):(e.openBlock(),e.createBlock(e.unref(he),{key:2,disabled:a.column.ellipsis??e.unref(r).ellipsis,"on-resize":me},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(e.unref(i).be("content"))},[a.column.ellipsis??e.unref(r).ellipsis?(e.openBlock(),e.createBlock(e.unref(ke),{key:0,inherit:"",class:e.normalizeClass(e.unref(i).be("ellipsis")),"tooltip-theme":e.unref(r).tooltipTheme,"tip-max-width":e.unref(r).tooltipWidth},{default:e.withCtx(()=>[d.value&&e.unref(p.isFunction)(a.column.renderer)?(e.openBlock(),e.createBlock(e.unref(b),{key:0,renderer:a.column.renderer},null,8,["renderer"])):e.unref(p.isFunction)(a.column.headRenderer)?(e.openBlock(),e.createBlock(e.unref(b),{key:1,renderer:a.column.headRenderer,data:{column:a.column,index:a.index}},null,8,["renderer","data"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(a.column.name),1)],64))]),_:1},8,["class","tooltip-theme","tip-max-width"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.value&&e.unref(p.isFunction)(a.column.renderer)?(e.openBlock(),e.createBlock(e.unref(b),{key:0,renderer:a.column.renderer},null,8,["renderer"])):e.unref(p.isFunction)(a.column.headRenderer)?(e.openBlock(),e.createBlock(e.unref(b),{key:1,renderer:a.column.headRenderer,data:{column:a.column,index:a.index}},null,8,["renderer","data"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(a.column.name),1)],64))],64)),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[f.value.able?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(i).be("sorter"))},[e.createElementVNode("span",{class:e.normalizeClass({[e.unref(i).bem("sorter","asc")]:!0,[e.unref(i).bem("sorter","active")]:f.value.type==="asc"}),onClick:n[0]||(n[0]=o=>ie())},[e.createVNode(V,{name:"asc",origin:e.unref(z).angleUp},null,8,["origin"])],2),e.createElementVNode("span",{class:e.normalizeClass({[e.unref(i).bem("sorter","desc")]:!0,[e.unref(i).bem("sorter","active")]:f.value.type==="desc"}),onClick:n[1]||(n[1]=o=>ae())},[e.createVNode(V,{name:"desc",origin:e.unref(z).angleDown},null,8,["origin"])],2)],2)):e.createCommentVNode("",!0),s.value.able?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(p.isFunction)(a.column.filterRenderer)?(e.openBlock(),e.createBlock(e.unref(b),{key:0,renderer:a.column.filterRenderer,data:{column:a.column,index:a.index,filter:s.value,handleFilter:y}},null,8,["renderer","data"])):(e.openBlock(),e.createBlock(e.unref(pe),{key:1,visible:g.value,"onUpdate:visible":n[3]||(n[3]=o=>g.value=o),transfer:"",placement:"bottom",trigger:"click",class:e.normalizeClass({[e.unref(i).be("filter")]:!0,[e.unref(i).bem("filter","visible")]:g.value,[e.unref(i).bem("filter","active")]:s.value.active}),"tip-class":{[e.unref(i).be("filter-wrapper")]:!0,[e.unref(i).bs("vars")]:!0,[e.unref(i).bem("filter-wrapper","multiple")]:s.value.multiple}},e.createSlots({trigger:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(i).be("filter-trigger"))},[e.createVNode(V,{name:"filter",origin:e.unref(z).filter},null,8,["origin"])],2)]),_:2},[s.value.multiple?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("div",{vertical:"",class:e.normalizeClass(e.unref(i).be("filter-group"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value.options,o=>(e.openBlock(),e.createBlock(e.unref(j),{key:o.value,inherit:"",checked:o.active,label:o.label,value:o.value,onChange:m=>ue(o.value,m)},null,8,["checked","label","value","onChange"]))),128))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(i).be("filter-actions"))},[e.createVNode(e.unref(P),{inherit:"",text:"",size:"small",disabled:!Z.value,onClick:n[2]||(n[2]=o=>se())},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value.filterConfirm),1)]),_:1},8,["disabled"]),e.createVNode(e.unref(P),{inherit:"",text:"",size:"small",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value.filterReset),1)]),_:1})],2)]),key:"0"}:{name:"default",fn:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass({[e.unref(i).be("filter-item")]:!0,[e.unref(i).bem("filter-item","active")]:!s.value.active}),onClick:M},e.toDisplayString(S.value.filterAll),3),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value.options,o=>(e.openBlock(),e.createElementBlock("div",{key:o.value,class:e.normalizeClass({[e.unref(i).be("filter-item")]:!0,[e.unref(i).bem("filter-item","active")]:o.active}),onClick:m=>ce(o.value,!o.active)},e.toDisplayString(o.label),11,xe))),128))]),key:"1"}]),1032,["visible","class","tip-class"]))],64)):e.createCommentVNode("",!0)],64))],2)]),_:1},8,["disabled"])),!d.value&&q.value&&!F.value&&!a.column.last?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"resizer",ref:U,class:e.normalizeClass(e.unref(i).be("resizer"))},null,2)):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass([e.unref(i).be("side-pad"),e.unref(i).bem("side-pad","right")]),role:"none","aria-hidden":""},null,2)):e.createCommentVNode("",!0)],16,ge))}});module.exports=be;
//# sourceMappingURL=table-head-cell.vue2.cjs.map