UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 3.74 kB
"use strict";const i=require("vue"),m=require("@vexip-ui/config"),c=require("@vexip-ui/utils"),w=require("./props.cjs"),a=require("./symbol.cjs"),z=Object.keys(w.tableColumnProps),g={idKey:"key"},k=["renderer","headRenderer","filterRenderer","summaryRenderer"],P=["idKey","fixed","type","width","minWidth","maxWidth","sorter","order","orderLabel","disableRow","headSpan","cellSpan"],K=["left","center","right"],d={default:null,isFunc:!0,static:!0},v=i.defineComponent({name:"TableColumn",inheritAttrs:!1,props:w.tableColumnProps,setup(x,{slots:l}){const r=m.useProps("tableColumn",x,{idKey:{default:null,validator:e=>!c.isNull(e),static:!0},name:{default:"",static:!0},accessor:{default:null,isFunc:!0,static:!0},fixed:{default:!1,static:!0},class:null,style:null,attrs:null,type:{default:null,validator:e=>a.columnTypes.includes(e),static:!0},width:null,minWidth:10,maxWidth:null,filter:null,sorter:!1,renderer:d,headRenderer:d,filterRenderer:d,order:{default:0,static:!0},ellipsis:null,checkboxSize:{...m.createSizeProp(),default:null},selectionSize:{...m.createSizeProp(),default:null},disableRow:{default:null,isFunc:!0},truthIndex:!1,orderLabel:{default:null,isFunc:!0},meta:null,textAlign:{default:"left",validator:e=>K.includes(e)},headSpan:{default:1,static:!0},cellSpan:d,noSummary:!1,summaryRenderer:d,indented:!1,formatter:{default:null,isFunc:!0},singleSelect:!1}),y=i.computed(()=>(r.checkboxSize&&c.warnOnce("'checkboxSize' has been deprecated, please use 'selectionSize' instead."),r.selectionSize??r.checkboxSize??"default")),n=i.inject(a.TABLE_ACTIONS,null),p=i.inject(a.COLUMN_GROUP_ACTIONS,null),t=i.reactive({});for(const e of z){if(k.includes(e))continue;if(e==="selectionSize"||e==="checkboxSize"){t.selectionSize=y.value,i.watch(y,u=>{t.selectionSize=u,n==null||n.setColumnProp(t.key,"selectionSize",u)});continue}const s=g[e]||e;if(t[s]=r[e],e==="idKey"){const u=o=>{c.isNull(o)&&r.type?t[s]=o=`__vxp_${r.type}`:t[s]=o};u(r.idKey),i.watch(()=>r.idKey,o=>{u(o),n==null||n.updateColumns()})}else if(e==="filter"){const u=i.computed(()=>{if(r.filter){const{meta:o,...f}=r.filter;return f}return r.filter});i.watch(u,()=>{t.filter=r.filter,n==null||n.updateColumns()},{deep:!0})}else{const u=P.includes(e);i.watch(()=>r[e],o=>{t[s]=o,u?n==null||n.updateColumns():n==null||n.setColumnProp(t.key,e,o)})}}i.watch(()=>r.renderer,h),i.watch(()=>r.headRenderer,S),i.watch(()=>r.filterRenderer,R),i.watch(()=>r.summaryRenderer,C),h(),S(),R(),C(),p?(p.increaseColumn(t),i.onBeforeUnmount(()=>{p.decreaseColumn(t)})):(n==null||n.increaseColumn(t),i.onBeforeUnmount(()=>{n==null||n.decreaseColumn(t)}));function h(){if(t.type&&t.type!=="expand"){t.renderer=void 0;return}t.renderer=e=>{if(typeof l.default=="function")return i.renderSlot(l,"default",e);if(typeof r.renderer=="function")return r.renderer(e);if(t.type==="expand")return"";const s=e.row,u=e.rowIndex,f=(typeof t.formatter=="function"?t.formatter:a.noopFormatter)(typeof r.accessor=="function"?r.accessor(s,u):s[t.key]);return c.isNull(f)?"":String(f)}}function S(){if(t.type==="selection"){t.renderer=void 0;return}t.headRenderer=e=>typeof l.head=="function"?i.renderSlot(l,"head",e):typeof r.headRenderer=="function"?r.headRenderer(e):r.name}function R(){typeof l.filter=="function"||typeof r.filterRenderer=="function"?t.filterRenderer=e=>typeof l.filter=="function"?i.renderSlot(l,"filter",e):r.filterRenderer(e):t.filterRenderer=void 0}function C(){typeof l.summary=="function"||typeof r.summaryRenderer=="function"?t.summaryRenderer=e=>typeof l.summary=="function"?i.renderSlot(l,"summary",e):typeof r.summaryRenderer=="function"?r.summaryRenderer(e):"":t.summaryRenderer=void 0}return()=>null}});module.exports=v; //# sourceMappingURL=table-column.cjs.map