vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.65 kB
JavaScript
;const e=require("vue"),g=require("./table-column.cjs"),O=require("@vexip-ui/config"),a=require("./props.cjs"),d=require("./symbol.cjs"),G=Object.keys(a.tableColumnGroupProps),N=["renderer","children"],S=["fixed","order"],p=e.defineComponent({name:"TableColumnGroup",inheritAttrs:!1,props:a.tableColumnGroupProps,setup(f,{slots:s}){const o=O.useProps("tableColumn",f,{name:{default:"",static:!0},fixed:{default:!1,static:!0},order:{default:0,static:!0},ellipsis:null,textAlign:"center",renderer:{default:null,isFunc:!0,static:!0},children:{default:()=>[],static:!0}}),n=e.inject(d.TABLE_ACTIONS,null),c=e.inject(d.COLUMN_GROUP_ACTIONS,null),i=e.reactive(new Set),m=e.computed(()=>[...i]),t=e.reactive({children:m});t.key=Symbol("TableColumnGroup");for(const r of G){if(N.includes(r))continue;t[r]=o[r];const l=S.includes(r);e.watch(()=>o[r],u=>{t[r]=u,l?n==null||n.updateColumns():n==null||n.setColumnProp(t.key,r,u)})}e.watch(()=>o.renderer,h,{immediate:!0}),e.provide(d.COLUMN_GROUP_ACTIONS,{increaseColumn:C,decreaseColumn:y}),c?(c.increaseColumn(t),e.onBeforeUnmount(()=>{c.decreaseColumn(t)})):(n==null||n.increaseColumn(t),e.onBeforeUnmount(()=>{n==null||n.decreaseColumn(t)}));function C(r){i.add(r)}function y(r){i.delete(r)}function h(){t.renderer=()=>typeof s.head=="function"?e.renderSlot(s,"head"):typeof o.renderer=="function"?o.renderer():o.name}function P(){return o.children.map(r=>{if("children"in r)return e.createVNode(p,r,null);const{key:l,...u}=r;return e.createVNode(g,e.mergeProps(u,{"id-key":l}),null)})}return()=>[e.renderSlot(s,"default"),...P()]}});module.exports=p;
//# sourceMappingURL=table-column-group.cjs.map