UNPKG

ll-package

Version:

2 lines (1 loc) 1.46 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("vue"),C=require("../../_util/classNames.js"),h=require("../context/TableContext.js"),S=require("./HeaderRow.js");function b(u){const n=[];function d(t,s){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;n[a]=n[a]||[];let c=s;return t.filter(Boolean).map(e=>{const o={key:e.key,class:C.default(e.className,e.class),column:e,colStart:c};let r=1;const l=e.children;return l&&l.length>0&&(r=d(l,c,a+1).reduce((m,w)=>m+w,0),o.hasSubColumns=!0),"colSpan"in e&&({colSpan:r}=e),"rowSpan"in e&&(o.rowSpan=e.rowSpan),o.colSpan=r,o.colEnd=o.colStart+r-1,n[a].push(o),c+=r,r})}d(u,0);const i=n.length;for(let t=0;t<i;t+=1)n[t].forEach(s=>{!("rowSpan"in s)&&!s.hasSubColumns&&(s.rowSpan=i-t)});return n}const g=p.defineComponent({name:"TableHeader",inheritAttrs:!1,props:["columns","flattenColumns","stickyOffsets","customHeaderRow"],setup(u){const n=h.useInjectTable(),d=p.computed(()=>b(u.columns));return()=>{const{prefixCls:i,getComponent:t}=n,{stickyOffsets:s,flattenColumns:a,customHeaderRow:c}=u,f=t(["header","wrapper"],"thead"),e=t(["header","row"],"tr"),o=t(["header","cell"],"th");return p.createVNode(f,{class:`${i}-thead`},{default:()=>[d.value.map((r,l)=>p.createVNode(S.default,{key:l,flattenColumns:a,cells:r,stickyOffsets:s,rowComponent:e,cellComponent:o,customHeaderRow:c,index:l},null))]})}}});exports.default=g;