UNPKG

vexip-ui

Version:

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

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