zxt-table 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -481,7 +481,6 @@ F.install = function(e) {
481
481
  };
482
482
  F.registerRenderer = Xe;
483
483
  F.renderer = ge;
484
- /*! Element Plus Icons Vue v2.3.2 */
485
484
  var lt = /* @__PURE__ */ C({
486
485
  name: "Delete",
487
486
  __name: "delete",
@@ -1 +1 @@
1
- (function(C,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus"],e):(C=typeof globalThis<"u"?globalThis:C||self,e(C.ZxtTable={},C.Vue,C.ElementPlus))})(this,(function(C,e,y){"use strict";const R=(t,n)=>{const a=t.__vccOpts||t;for(const[o,l]of n)a[o]=l;return a},de={name:"MyButton",props:{type:{type:String,default:"default",validator:t=>["default","primary","success","warning","danger"].includes(t)},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n}){return{handleClick:o=>{n("click",o)}}}},ce=["disabled"];function pe(t,n,a,o,l,c){return e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["my-button",[`my-button--${a.type}`,{"is-disabled":a.disabled}]]),disabled:a.disabled,onClick:n[0]||(n[0]=(...s)=>o.handleClick&&o.handleClick(...s))},[e.renderSlot(t.$slots,"default",{},void 0,!0)],10,ce)}const T=R(de,[["render",pe],["__scopeId","data-v-4480e77d"]]);T.install=function(t){t.component(T.name,T)};const N=e.defineComponent({name:"JsxButton",props:{type:{type:String,default:"default",validator:t=>["default","primary","success","warning","danger"].includes(t)},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n,slots:a}){const o=l=>{t.disabled||n("click",l)};return()=>e.createVNode("button",{class:["jsx-button",`jsx-button--${t.type}`,{"is-disabled":t.disabled}],disabled:t.disabled,onClick:o},[a.default?.()])}});N.install=function(t){t.component(N.name,N)};const me=e.defineComponent({name:"ZxtPagination",components:{ElPagination:y.ElPagination},props:{modelValue:{type:Number,default:1},pageSize:{type:Number,default:10},pageSizes:{type:Array,default:()=>[10,20,50,100]},total:{type:Number,default:0},layout:{type:String,default:"total, sizes, prev, pager, next, jumper"}},emits:["update:modelValue","update:pageSize","page-change","size-change"],setup(t,{emit:n}){const a=e.ref(t.modelValue),o=e.ref(t.pageSize);return e.watch(()=>t.modelValue,s=>{a.value=s}),e.watch(()=>t.pageSize,s=>{o.value=s}),{currentPage:a,pageSize:o,handleSizeChange:s=>{o.value=s,a.value=1,n("update:pageSize",s),n("size-change",{page:a.value,size:s})},handleCurrentChange:s=>{a.value=s,n("update:modelValue",s),n("page-change",{page:s,size:o.value})}}}});function fe(t,n,a,o,l,c){const s=e.resolveComponent("el-pagination");return e.openBlock(),e.createBlock(s,{"current-page":t.currentPage,"onUpdate:currentPage":n[0]||(n[0]=g=>t.currentPage=g),"page-size":t.pageSize,"onUpdate:pageSize":n[1]||(n[1]=g=>t.pageSize=g),"page-sizes":t.pageSizes,total:t.total,layout:t.layout,class:"zxt-pagination",onSizeChange:t.handleSizeChange,onCurrentChange:t.handleCurrentChange},null,8,["current-page","page-size","page-sizes","total","layout","onSizeChange","onCurrentChange"])}const B=R(me,[["render",fe],["__scopeId","data-v-4703797d"]]),P={default:({cellValue:t})=>t??"",input:({cellValue:t,row:n,column:a,updateRow:o})=>e.h(y.ElInput,{modelValue:t,size:"small",onInput:l=>o({...n,[a.property]:l})}),select:({cellValue:t,row:n,column:a,updateRow:o,options:l=[]})=>e.h(y.ElSelect,{modelValue:t,size:"small",onChange:c=>o({...n,[a.property]:c})},()=>l.map(c=>e.h(y.ElOption,{label:c.label,value:c.value,key:c.value}))),checkbox:({cellValue:t,row:n,column:a,updateRow:o})=>e.h(y.ElCheckbox,{modelValue:!!t,onChange:l=>o({...n,[a.property]:l})}),link:({cellValue:t,href:n,target:a="_blank"})=>e.h(y.ElLink,{href:n,target:a},()=>t)};function ge(t,n){if(!t)return null;if(typeof t=="string"){const a=P[t];return a?a(n):(console.warn(`[ZxtTable] 未找到内置渲染器: ${t}`),n.cellValue??"")}if(typeof t=="function")return t(n);if(typeof t=="object"&&!Array.isArray(t)){const{name:a,props:o={},attrs:l={},events:c={},content:s}=t;return typeof a=="string"&&P[a]?P[a]({...n,...o,...l,...c}):typeof a=="object"||typeof a=="function"?e.h(a,{...o,...l,...c},s):(console.warn("[ZxtTable] cellRender 对象缺少有效的 name 字段"),n.cellValue??"")}return n.cellValue??""}function ue(t,n){P[t]&&console.warn(`[ZxtTable] 内置渲染器 ${t} 已被覆盖`),P[t]=n}const he=e.defineComponent({name:"ZxtTableColumn",components:{ElTableColumn:y.ElTableColumn},props:{column:{type:Object,required:!0}},setup(t){const n=e.inject("updateRow",()=>{});return{renderCell:o=>{const l=o.row[t.column.prop],c=l??t.column.defaultValue??"";return ge(t.column.cellRender,{row:o.row,column:t.column,rowIndex:o.$index,cellValue:c,updateRow:s=>n(s,o.$index)})}}}});function Ce(t,n,a,o,l,c){const s=e.resolveComponent("ZxtTableColumn",!0),g=e.resolveComponent("el-table-column");return t.column.children&&t.column.children.length?(e.openBlock(),e.createBlock(g,e.mergeProps({key:0},t.column,{key:t.column.prop+"-group"}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.column.children,(f,p)=>(e.openBlock(),e.createBlock(s,{key:p,column:f},e.createSlots({_:2},[e.renderList(t.$slots,(h,i)=>({name:i,fn:e.withCtx(w=>[e.renderSlot(t.$slots,i,e.mergeProps({ref_for:!0},w))])}))]),1032,["column"]))),128))]),_:3},16)):(e.openBlock(),e.createBlock(g,e.mergeProps({key:1},t.column,{key:t.column.prop}),{default:e.withCtx(f=>[t.column.slot?e.renderSlot(t.$slots,t.column.slot,{key:0,row:f.row,index:f.$index,column:t.column}):t.column.cellRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.renderCell(f)),{key:1})):t.column.formatter?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(t.column.formatter(f.row,t.column,f.row[t.column.prop],f.$index)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createTextVNode(e.toDisplayString(f.row[t.column.prop]),1)],64))]),_:3},16))}const ye=R(he,[["render",Ce]]),be=e.defineComponent({name:"ZxtTable",inheritAttrs:!1,components:{ZxtPagination:B,ZxtTableColumn:ye,ElTable:y.ElTable},props:{id:{type:String,default:""},columns:{type:Array,default:()=>[]},data:{type:Array,default:()=>[]},height:{type:[String,Number],default:""},pageable:{type:Boolean,default:!0},currentPage:{type:Number,default:1},pageSize:{type:Number,default:10},pageSizes:{type:Array,default:()=>[10,20,50,100]},total:{type:Number,default:0},paginationLayout:{type:String,default:"total, sizes, prev, pager, next, jumper"},proxyConfig:{type:Object,default:null}},emits:["page-change","size-change","sort-change","filter-change","loaded","load-error","update:row"],setup(t,{emit:n}){const a=e.ref(null),o=e.ref(t.pageSize),l=e.ref(t.currentPage),c=e.ref(!1),s=e.ref([]),g=e.ref(0),f=e.ref({prop:"",order:""}),p=e.ref({}),h=e.computed(()=>t.height==="full"?{height:"100%"}:{}),i=e.computed(()=>!!t.proxyConfig),w=e.computed(()=>i.value?g.value:t.total>0?t.total:t.data.length),r=e.computed(()=>i.value?s.value:t.data),m=u=>{i.value&&(l.value=u.page,o.value=u.size,z()),n("size-change",u)},_=u=>{i.value&&(l.value=u.page,o.value=u.size,z()),n("page-change",u)},A=({prop:u,order:S})=>{f.value={prop:u,order:S},i.value&&z(),n("sort-change",{prop:u,order:S})},O=u=>{p.value=u||{},i.value&&z(),n("filter-change",p.value)},z=async()=>{if(!i.value)return;const u=t.proxyConfig||{},S=u.ajax?.query;if(typeof S!="function")return;const $=u.props||{},U=$.pageField||"page",G=$.sizeField||"size",J=$.sortField||"sort",W=$.orderField||"order",K=$.filtersField||"filters",Q=u.params||{},E={[U]:l.value,[G]:o.value,...Q};f.value?.prop&&(E[J]=f.value.prop,E[W]=f.value.order),p.value&&Object.keys(p.value).length&&(E[K]=p.value),c.value=!0;try{const k=await S(E),d=u.response||{},F=d.listField||"list",se=d.totalField||"total",D=d.transform;let M=[],X=0;if(typeof D=="function"){const ie=D(k);M=ie?.list??[],X=ie?.total??0}else k&&typeof k=="object"&&(M=k?.[F]??k?.data??[],X=k?.[se]??k?.total??0);s.value=Array.isArray(M)?M:[],g.value=Number(X)||0,n("loaded",{data:s.value,total:g.value,payload:E})}catch(k){n("load-error",k)}finally{c.value=!1}},L=(u,S)=>{i.value?s.value.splice(S,1,u):n("update:row",{index:S,row:u})};e.provide("updateRow",L),e.onMounted(()=>{i.value&&z()});const H=()=>a.value,I=()=>a.value?.getSelectionRows?.()||[],q=()=>z();return{tableRef:a,containerStyle:h,getTableRef:H,pageSize:o,currentPage:l,loading:c,renderData:r,total:w,pageSizes:e.computed(()=>t.pageSizes),paginationLayout:e.computed(()=>t.paginationLayout),handleSizeChange:m,handlePageChange:_,handleSortChange:A,handleFilterChange:O,reload:q,getSelectedRows:I,updateRow:L}}});function ke(t,n,a,o,l,c){const s=e.resolveComponent("ZxtTableColumn"),g=e.resolveComponent("el-table"),f=e.resolveComponent("ZxtPagination"),p=e.resolveDirective("loading");return e.openBlock(),e.createElementBlock("div",{class:"zxt-table-container",style:e.normalizeStyle(t.containerStyle)},[e.withDirectives((e.openBlock(),e.createBlock(g,e.mergeProps({ref:"tableRef",data:t.renderData,height:t.height},t.$attrs,{id:t.id,onSortChange:t.handleSortChange,onFilterChange:t.handleFilterChange}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,(h,i)=>(e.openBlock(),e.createBlock(s,{key:i,column:h},e.createSlots({_:2},[e.renderList(t.$slots,(w,r)=>({name:r,fn:e.withCtx(m=>[e.renderSlot(t.$slots,r,e.mergeProps({ref_for:!0},m),void 0,!0)])}))]),1032,["column"]))),128))]),_:3},16,["data","height","id","onSortChange","onFilterChange"])),[[p,t.loading]]),t.pageable?(e.openBlock(),e.createBlock(f,{key:0,"model-value":t.currentPage,"page-size":t.pageSize,"onUpdate:pageSize":n[0]||(n[0]=h=>t.pageSize=h),"page-sizes":t.pageSizes,total:t.total,layout:t.paginationLayout,onPageChange:t.handlePageChange,onSizeChange:t.handleSizeChange},null,8,["model-value","page-size","page-sizes","total","layout","onPageChange","onSizeChange"])):e.createCommentVNode("",!0)],4)}const b=R(be,[["render",ke],["__scopeId","data-v-25052d16"]]),V=new Map;class we{add(n,a){return!n||typeof n!="string"?(console.warn("[ZxtTable] 渲染器名称必须是字符串"),this):!a||typeof a!="object"?(console.warn("[ZxtTable] 渲染器配置必须是对象"),this):(V.has(n)&&console.warn(`[ZxtTable] 渲染器 "${n}" 已存在,将被覆盖`),V.set(n,a),this)}get(n){return V.get(n)}delete(n){return V.delete(n)}has(n){return V.has(n)}getAll(){return Array.from(V.keys())}clear(){V.clear()}}const j=new we;function Se(t,n,a={}){if(!t||!t.itemRender)return null;const{name:o}=t.itemRender;if(o&&j.has(o)){const l=j.get(o);if(typeof l.renderItemContent=="function"){const c={data:n,field:t.field||t.prop,item:t,formData:n};try{return l.renderItemContent(a,c)}catch(s){return console.error(`[ZxtTable] 渲染器 "${o}" 执行出错:`,s),null}}}return null}b.install=function(t){t.component(b.name,b)},b.registerRenderer=ue,b.renderer=j;/*! Element Plus Icons Vue v2.3.2 */var _e=e.defineComponent({name:"Delete",__name:"delete",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Y=_e,ze=e.defineComponent({name:"Download",__name:"download",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"})]))}}),v=ze,Be=e.defineComponent({name:"Edit",__name:"edit",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z"}),e.createElementVNode("path",{fill:"currentColor",d:"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"})]))}}),ee=Be,Ve=e.defineComponent({name:"Plus",__name:"plus",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),te=Ve,$e=e.defineComponent({name:"Refresh",__name:"refresh",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z"})]))}}),ne=$e,Ee=e.defineComponent({name:"Search",__name:"search",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),ae=Ee,Fe=e.defineComponent({name:"Setting",__name:"setting",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),oe=Fe,Re=e.defineComponent({name:"Upload",__name:"upload",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z"})]))}}),re=Re,Te=e.defineComponent({name:"View",__name:"view",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),le=Te;const Ne=e.defineComponent({name:"ZxtForm",props:{formColumns:{type:Array,default:()=>[]},initialFormData:{type:Object,default:()=>({})},rules:{type:Object,default:()=>({})}},emits:["submit","reset"],setup(t,{emit:n,expose:a}){const o=e.ref(null),l=e.reactive({}),c={input:"el-input",select:"el-select",date:"el-date-picker",cascader:"el-cascader"},s=r=>c[r]||"el-input",g=r=>{const m=r.type||"input",_={placeholder:r.placeholder||`请${m==="select"||m==="date"||m==="cascader"?"选择":"输入"}${r.label}`,disabled:r.disabled,style:"width: 100%"};switch(m){case"date":return{..._,type:r.dateType||"date"};case"cascader":return{..._,options:r.options,props:r.cascaderProps,clearable:r.clearable!==!1};case"select":return _;case"input":default:return _}},f=e.computed(()=>t.formColumns.map(r=>({...r,colSpan:{xs:r.xs??r.span??24,sm:r.sm??r.span??12,md:r.md??r.span??12,lg:r.lg??r.span??12,xl:r.xl??r.span??12}})));e.watch(()=>t.initialFormData,r=>{Object.keys(l).forEach(m=>{delete l[m]}),Object.assign(l,r)},{immediate:!0,deep:!0});const p=e.computed(()=>{const r={...t.rules};return Object.keys(r).length===0&&t.formColumns.length>0&&t.formColumns.forEach(m=>{m.required&&(r[m.prop]=[{required:!0,message:`请${m.type==="select"||m.type==="date"||m.type==="cascader"?"选择":"输入"}${m.label}`,trigger:m.type==="select"||m.type==="date"||m.type==="cascader"?"change":"blur"}])}),r}),h=()=>{o.value&&o.value.validate(r=>{r&&n("submit",{...l})})},i=()=>{o.value&&o.value.resetFields(),n("reset")},w=r=>()=>Se(r,l,{})||null;return a({validate:()=>o.value?o.value.validate():Promise.resolve(!1),resetFields:()=>o.value&&o.value.resetFields(),getFormData:()=>({...l})}),{formRef:o,formData:l,formRules:p,submitForm:h,resetForm:i,processedColumns:f,getComponentType:s,getComponentProps:g,renderCustomItem:w}}}),Pe={class:"zxt-form-container"};function De(t,n,a,o,l,c){const s=e.resolveComponent("el-option"),g=e.resolveComponent("el-form-item"),f=e.resolveComponent("el-col"),p=e.resolveComponent("el-row"),h=e.resolveComponent("el-form");return e.openBlock(),e.createElementBlock("div",Pe,[e.createVNode(h,{ref:"formRef",model:t.formData,rules:t.formRules,"label-width":"100px",class:"zxt-form"},{default:e.withCtx(()=>[e.createVNode(p,{gutter:20},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.processedColumns,(i,w)=>(e.openBlock(),e.createBlock(f,e.mergeProps({key:w},{ref_for:!0},i.colSpan),{default:e.withCtx(()=>[e.createVNode(g,{label:i.label,prop:i.prop,required:i.required,"label-width":i.labelWidth},{default:e.withCtx(()=>[i.type==="slot"?e.renderSlot(t.$slots,i.slotName||i.prop,{key:0,formData:t.formData,column:i},void 0,!0):i.itemRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.renderCustomItem(i)),{key:1})):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getComponentType(i.type)),e.mergeProps({key:2,modelValue:t.formData[i.prop],"onUpdate:modelValue":r=>t.formData[i.prop]=r},{ref_for:!0},t.getComponentProps(i)),{default:e.withCtx(()=>[i.type==="select"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.options,(r,m)=>(e.openBlock(),e.createBlock(s,{key:m,label:r.label,value:r.value},null,8,["label","value"]))),128)):e.createCommentVNode("",!0)]),_:2},1040,["modelValue","onUpdate:modelValue"]))]),_:2},1032,["label","prop","required","label-width"])]),_:2},1040))),128))]),_:3})]),_:3},8,["model","rules"])])}const Z=R(Ne,[["render",De],["__scopeId","data-v-baaa06c7"]]),Ze=e.defineComponent({name:"ZxtGrid",components:{ZxtTable:b,ZxtForm:Z,Plus:te,Delete:Y,Refresh:ne,Download:v,Search:ae,Edit:ee,View:le,Upload:re,Setting:oe},props:{gridOptions:{type:Object,default:()=>({id:"grid",columns:[],data:[],height:400,pageable:!0,pageSizes:[10,20,50,100],paginationLayout:"total, sizes, prev, pager, next, jumper",toolbar:null,formMode:!1,formColumns:[],initialFormData:{},rules:{}})},externalData:{type:Array,default:()=>[]}},emits:["toolbar-click","submit","reset","page-change","size-change"],setup(t,{emit:n,expose:a}){const o=e.ref(null),l=e.ref(null),c=e.ref(null),s=e.ref(1),g=e.ref(10),f=e.ref([]),p=e.ref(t.gridOptions.formMode||!0),h={Plus:te,Delete:Y,Refresh:ne,Download:v,Search:ae,Edit:ee,View:le,Upload:re,Setting:oe},i=e.computed(()=>{const d=t.gridOptions.formConfig;if(!d||!d.items)return[];const F=[...d.items];return F.some(D=>D.type==="slot"&&D.slotName==="search-actions")||F.push({type:"slot",slotName:"search-actions",span:6,labelWidth:"0px",...d.actionConfig}),F}),w=()=>{c.value?.submitForm()},r=d=>{n("search-submit",d)},m=()=>{c.value?.resetForm()},_=()=>{n("search-reset"),setTimeout(()=>{c.value?.submitForm()},0)},A=d=>{if(d)return typeof d=="object"||typeof d=="function"?d:h[d]},O=e.computed(()=>t.externalData.length>0?t.externalData:t.gridOptions.data||[]),z=e.computed(()=>O.value.length),L=(d,F)=>{switch(n("toolbar-click",{code:d,button:F,grid:o.value}),d){case"add":H();break;case"delete":I();break;case"refresh":q();break;case"export":u();break}},H=()=>{p.value=!0},I=()=>{const d=o.value?.getTableRef()?.getSelectionRows?.()||[];if(d.length===0){y.ElMessage.warning("请先选择要删除的数据");return}y.ElMessage.success(`删除 ${d.length} 条数据`)},q=()=>{y.ElMessage.success("刷新数据"),o.value?.reload?.()},u=()=>{y.ElMessage.success("导出数据")},S=d=>{n("submit",d)},$=()=>{n("reset")},U=()=>{p.value=!1},G=d=>{s.value=d.page,n("page-change",d)},J=d=>{g.value=d.size,n("size-change",d)},W=()=>o.value,K=()=>l.value,Q=()=>o.value?.getTableRef()?.getSelectionRows?.()||[],E=d=>{f.value=d},k=d=>{p.value=d};return e.watch(()=>t.gridOptions.formMode,d=>{d!==void 0&&(p.value=d)}),a({getGridRef:W,getFormRef:K,getSelectedRows:Q,reloadData:E,setFormVisible:k}),{gridRef:o,formRef:l,searchFormRef:c,currentPage:s,pageSize:g,tableData:O,total:z,isFormVisible:p,searchFormColumns:i,getIconComponent:A,handleToolbarClick:L,handleSubmit:S,handleFormReset:$,handleFormCancel:U,handlePageChange:G,handleSizeChange:J,handleSearch:w,handleSearchSubmit:r,handleReset:m,handleSearchReset:_}}}),Oe={class:"zxt-grid-container"},Le={key:1,class:"grid-search-form"},Me={class:"search-btn-group"},je={key:0,class:"grid-toolbar"};function xe(t,n,a,o,l,c){const s=e.resolveComponent("el-button"),g=e.resolveComponent("ZxtForm"),f=e.resolveComponent("ZxtTable");return e.openBlock(),e.createElementBlock("div",Oe,[t.isFormVisible?(e.openBlock(),e.createBlock(g,{key:0,ref:"formRef","form-columns":t.gridOptions.formColumns,"initial-form-data":t.gridOptions.initialFormData,rules:t.gridOptions.rules,onSubmit:t.handleSubmit,onReset:t.handleFormReset},{"form-actions":e.withCtx(()=>[e.renderSlot(t.$slots,"form-actions",{},()=>[e.createVNode(s,{onClick:t.handleFormCancel},{default:e.withCtx(()=>[...n[0]||(n[0]=[e.createTextVNode("取消",-1)])]),_:1},8,["onClick"])],!0)]),_:3},8,["form-columns","initial-form-data","rules","onSubmit","onReset"])):e.createCommentVNode("",!0),t.gridOptions.formConfig?(e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(g,{ref:"searchFormRef","form-columns":t.searchFormColumns,"initial-form-data":t.gridOptions.formConfig.data,rules:t.gridOptions.formConfig.rules,onSubmit:t.handleSearchSubmit,onReset:t.handleSearchReset},e.createSlots({"search-actions":e.withCtx(()=>[e.createElementVNode("div",Me,[e.createVNode(s,{type:"primary",icon:t.Search,onClick:t.handleSearch},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode(" 查询 ",-1)])]),_:1},8,["icon","onClick"]),e.createVNode(s,{icon:t.Refresh,onClick:t.handleReset},{default:e.withCtx(()=>[...n[2]||(n[2]=[e.createTextVNode(" 重置 ",-1)])]),_:1},8,["icon","onClick"])])]),_:2},[e.renderList(t.$slots,(p,h)=>({name:h,fn:e.withCtx(i=>[e.renderSlot(t.$slots,h,e.normalizeProps(e.guardReactiveProps(i)),void 0,!0)])}))]),1032,["form-columns","initial-form-data","rules","onSubmit","onReset"])])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[t.gridOptions.toolbar?(e.openBlock(),e.createElementBlock("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.gridOptions.toolbar.buttons,(p,h)=>(e.openBlock(),e.createBlock(s,{key:h,type:p.type||"default",size:p.size||"small",icon:t.getIconComponent(p.icon),disabled:p.disabled,onClick:i=>t.handleToolbarClick(p.code,p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.name),1)]),_:2},1032,["type","size","icon","disabled","onClick"]))),128)),e.renderSlot(t.$slots,"toolbar",{grid:t.$refs.gridRef},void 0,!0)])):e.createCommentVNode("",!0),e.createVNode(f,{ref:"gridRef",id:t.gridOptions.id,columns:t.gridOptions.columns,data:t.tableData,height:t.gridOptions.height,pageable:t.gridOptions.pageable!==!1,"current-page":t.currentPage,"page-size":t.pageSize,"page-sizes":t.gridOptions.pageSizes,total:t.total,"pagination-layout":t.gridOptions.paginationLayout,onPageChange:t.handlePageChange,onSizeChange:t.handleSizeChange},e.createSlots({_:2},[e.renderList(t.$slots,(p,h)=>({name:h,fn:e.withCtx(i=>[e.renderSlot(t.$slots,h,e.normalizeProps(e.guardReactiveProps(i)),void 0,!0)])}))]),1032,["id","columns","data","height","pageable","current-page","page-size","page-sizes","total","pagination-layout","onPageChange","onSizeChange"])])])}const x=R(Ze,[["render",xe],["__scopeId","data-v-72fcb85d"]]);B.install=function(t){t.component(B.name,B)};const Ae=[T,N,b,x,Z,B],He={install:t=>{Ae.forEach(n=>{t.component(n.name,n)})},MyButton:T,JsxButton:N,ZxtTable:b,ZxtGrid:x,ZxtForm:Z,ZxtPagination:B,renderer:b.renderer,registerRenderer:b.registerRenderer};C.JsxButton=N,C.MyButton=T,C.ZxtForm=Z,C.ZxtGrid=x,C.ZxtPagination=B,C.ZxtTable=b,C.default=He,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(C,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus"],e):(C=typeof globalThis<"u"?globalThis:C||self,e(C.ZxtTable={},C.Vue,C.ElementPlus))})(this,(function(C,e,y){"use strict";const R=(t,n)=>{const a=t.__vccOpts||t;for(const[o,l]of n)a[o]=l;return a},de={name:"MyButton",props:{type:{type:String,default:"default",validator:t=>["default","primary","success","warning","danger"].includes(t)},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n}){return{handleClick:o=>{n("click",o)}}}},ce=["disabled"];function pe(t,n,a,o,l,c){return e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["my-button",[`my-button--${a.type}`,{"is-disabled":a.disabled}]]),disabled:a.disabled,onClick:n[0]||(n[0]=(...s)=>o.handleClick&&o.handleClick(...s))},[e.renderSlot(t.$slots,"default",{},void 0,!0)],10,ce)}const T=R(de,[["render",pe],["__scopeId","data-v-4480e77d"]]);T.install=function(t){t.component(T.name,T)};const N=e.defineComponent({name:"JsxButton",props:{type:{type:String,default:"default",validator:t=>["default","primary","success","warning","danger"].includes(t)},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n,slots:a}){const o=l=>{t.disabled||n("click",l)};return()=>e.createVNode("button",{class:["jsx-button",`jsx-button--${t.type}`,{"is-disabled":t.disabled}],disabled:t.disabled,onClick:o},[a.default?.()])}});N.install=function(t){t.component(N.name,N)};const me=e.defineComponent({name:"ZxtPagination",components:{ElPagination:y.ElPagination},props:{modelValue:{type:Number,default:1},pageSize:{type:Number,default:10},pageSizes:{type:Array,default:()=>[10,20,50,100]},total:{type:Number,default:0},layout:{type:String,default:"total, sizes, prev, pager, next, jumper"}},emits:["update:modelValue","update:pageSize","page-change","size-change"],setup(t,{emit:n}){const a=e.ref(t.modelValue),o=e.ref(t.pageSize);return e.watch(()=>t.modelValue,s=>{a.value=s}),e.watch(()=>t.pageSize,s=>{o.value=s}),{currentPage:a,pageSize:o,handleSizeChange:s=>{o.value=s,a.value=1,n("update:pageSize",s),n("size-change",{page:a.value,size:s})},handleCurrentChange:s=>{a.value=s,n("update:modelValue",s),n("page-change",{page:s,size:o.value})}}}});function fe(t,n,a,o,l,c){const s=e.resolveComponent("el-pagination");return e.openBlock(),e.createBlock(s,{"current-page":t.currentPage,"onUpdate:currentPage":n[0]||(n[0]=g=>t.currentPage=g),"page-size":t.pageSize,"onUpdate:pageSize":n[1]||(n[1]=g=>t.pageSize=g),"page-sizes":t.pageSizes,total:t.total,layout:t.layout,class:"zxt-pagination",onSizeChange:t.handleSizeChange,onCurrentChange:t.handleCurrentChange},null,8,["current-page","page-size","page-sizes","total","layout","onSizeChange","onCurrentChange"])}const B=R(me,[["render",fe],["__scopeId","data-v-4703797d"]]),P={default:({cellValue:t})=>t??"",input:({cellValue:t,row:n,column:a,updateRow:o})=>e.h(y.ElInput,{modelValue:t,size:"small",onInput:l=>o({...n,[a.property]:l})}),select:({cellValue:t,row:n,column:a,updateRow:o,options:l=[]})=>e.h(y.ElSelect,{modelValue:t,size:"small",onChange:c=>o({...n,[a.property]:c})},()=>l.map(c=>e.h(y.ElOption,{label:c.label,value:c.value,key:c.value}))),checkbox:({cellValue:t,row:n,column:a,updateRow:o})=>e.h(y.ElCheckbox,{modelValue:!!t,onChange:l=>o({...n,[a.property]:l})}),link:({cellValue:t,href:n,target:a="_blank"})=>e.h(y.ElLink,{href:n,target:a},()=>t)};function ge(t,n){if(!t)return null;if(typeof t=="string"){const a=P[t];return a?a(n):(console.warn(`[ZxtTable] 未找到内置渲染器: ${t}`),n.cellValue??"")}if(typeof t=="function")return t(n);if(typeof t=="object"&&!Array.isArray(t)){const{name:a,props:o={},attrs:l={},events:c={},content:s}=t;return typeof a=="string"&&P[a]?P[a]({...n,...o,...l,...c}):typeof a=="object"||typeof a=="function"?e.h(a,{...o,...l,...c},s):(console.warn("[ZxtTable] cellRender 对象缺少有效的 name 字段"),n.cellValue??"")}return n.cellValue??""}function ue(t,n){P[t]&&console.warn(`[ZxtTable] 内置渲染器 ${t} 已被覆盖`),P[t]=n}const he=e.defineComponent({name:"ZxtTableColumn",components:{ElTableColumn:y.ElTableColumn},props:{column:{type:Object,required:!0}},setup(t){const n=e.inject("updateRow",()=>{});return{renderCell:o=>{const l=o.row[t.column.prop],c=l??t.column.defaultValue??"";return ge(t.column.cellRender,{row:o.row,column:t.column,rowIndex:o.$index,cellValue:c,updateRow:s=>n(s,o.$index)})}}}});function Ce(t,n,a,o,l,c){const s=e.resolveComponent("ZxtTableColumn",!0),g=e.resolveComponent("el-table-column");return t.column.children&&t.column.children.length?(e.openBlock(),e.createBlock(g,e.mergeProps({key:0},t.column,{key:t.column.prop+"-group"}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.column.children,(f,p)=>(e.openBlock(),e.createBlock(s,{key:p,column:f},e.createSlots({_:2},[e.renderList(t.$slots,(h,i)=>({name:i,fn:e.withCtx(w=>[e.renderSlot(t.$slots,i,e.mergeProps({ref_for:!0},w))])}))]),1032,["column"]))),128))]),_:3},16)):(e.openBlock(),e.createBlock(g,e.mergeProps({key:1},t.column,{key:t.column.prop}),{default:e.withCtx(f=>[t.column.slot?e.renderSlot(t.$slots,t.column.slot,{key:0,row:f.row,index:f.$index,column:t.column}):t.column.cellRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.renderCell(f)),{key:1})):t.column.formatter?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(t.column.formatter(f.row,t.column,f.row[t.column.prop],f.$index)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createTextVNode(e.toDisplayString(f.row[t.column.prop]),1)],64))]),_:3},16))}const ye=R(he,[["render",Ce]]),be=e.defineComponent({name:"ZxtTable",inheritAttrs:!1,components:{ZxtPagination:B,ZxtTableColumn:ye,ElTable:y.ElTable},props:{id:{type:String,default:""},columns:{type:Array,default:()=>[]},data:{type:Array,default:()=>[]},height:{type:[String,Number],default:""},pageable:{type:Boolean,default:!0},currentPage:{type:Number,default:1},pageSize:{type:Number,default:10},pageSizes:{type:Array,default:()=>[10,20,50,100]},total:{type:Number,default:0},paginationLayout:{type:String,default:"total, sizes, prev, pager, next, jumper"},proxyConfig:{type:Object,default:null}},emits:["page-change","size-change","sort-change","filter-change","loaded","load-error","update:row"],setup(t,{emit:n}){const a=e.ref(null),o=e.ref(t.pageSize),l=e.ref(t.currentPage),c=e.ref(!1),s=e.ref([]),g=e.ref(0),f=e.ref({prop:"",order:""}),p=e.ref({}),h=e.computed(()=>t.height==="full"?{height:"100%"}:{}),i=e.computed(()=>!!t.proxyConfig),w=e.computed(()=>i.value?g.value:t.total>0?t.total:t.data.length),r=e.computed(()=>i.value?s.value:t.data),m=u=>{i.value&&(l.value=u.page,o.value=u.size,z()),n("size-change",u)},_=u=>{i.value&&(l.value=u.page,o.value=u.size,z()),n("page-change",u)},A=({prop:u,order:S})=>{f.value={prop:u,order:S},i.value&&z(),n("sort-change",{prop:u,order:S})},O=u=>{p.value=u||{},i.value&&z(),n("filter-change",p.value)},z=async()=>{if(!i.value)return;const u=t.proxyConfig||{},S=u.ajax?.query;if(typeof S!="function")return;const $=u.props||{},U=$.pageField||"page",G=$.sizeField||"size",J=$.sortField||"sort",W=$.orderField||"order",K=$.filtersField||"filters",Q=u.params||{},E={[U]:l.value,[G]:o.value,...Q};f.value?.prop&&(E[J]=f.value.prop,E[W]=f.value.order),p.value&&Object.keys(p.value).length&&(E[K]=p.value),c.value=!0;try{const k=await S(E),d=u.response||{},F=d.listField||"list",se=d.totalField||"total",D=d.transform;let M=[],X=0;if(typeof D=="function"){const ie=D(k);M=ie?.list??[],X=ie?.total??0}else k&&typeof k=="object"&&(M=k?.[F]??k?.data??[],X=k?.[se]??k?.total??0);s.value=Array.isArray(M)?M:[],g.value=Number(X)||0,n("loaded",{data:s.value,total:g.value,payload:E})}catch(k){n("load-error",k)}finally{c.value=!1}},L=(u,S)=>{i.value?s.value.splice(S,1,u):n("update:row",{index:S,row:u})};e.provide("updateRow",L),e.onMounted(()=>{i.value&&z()});const H=()=>a.value,I=()=>a.value?.getSelectionRows?.()||[],q=()=>z();return{tableRef:a,containerStyle:h,getTableRef:H,pageSize:o,currentPage:l,loading:c,renderData:r,total:w,pageSizes:e.computed(()=>t.pageSizes),paginationLayout:e.computed(()=>t.paginationLayout),handleSizeChange:m,handlePageChange:_,handleSortChange:A,handleFilterChange:O,reload:q,getSelectedRows:I,updateRow:L}}});function ke(t,n,a,o,l,c){const s=e.resolveComponent("ZxtTableColumn"),g=e.resolveComponent("el-table"),f=e.resolveComponent("ZxtPagination"),p=e.resolveDirective("loading");return e.openBlock(),e.createElementBlock("div",{class:"zxt-table-container",style:e.normalizeStyle(t.containerStyle)},[e.withDirectives((e.openBlock(),e.createBlock(g,e.mergeProps({ref:"tableRef",data:t.renderData,height:t.height},t.$attrs,{id:t.id,onSortChange:t.handleSortChange,onFilterChange:t.handleFilterChange}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,(h,i)=>(e.openBlock(),e.createBlock(s,{key:i,column:h},e.createSlots({_:2},[e.renderList(t.$slots,(w,r)=>({name:r,fn:e.withCtx(m=>[e.renderSlot(t.$slots,r,e.mergeProps({ref_for:!0},m),void 0,!0)])}))]),1032,["column"]))),128))]),_:3},16,["data","height","id","onSortChange","onFilterChange"])),[[p,t.loading]]),t.pageable?(e.openBlock(),e.createBlock(f,{key:0,"model-value":t.currentPage,"page-size":t.pageSize,"onUpdate:pageSize":n[0]||(n[0]=h=>t.pageSize=h),"page-sizes":t.pageSizes,total:t.total,layout:t.paginationLayout,onPageChange:t.handlePageChange,onSizeChange:t.handleSizeChange},null,8,["model-value","page-size","page-sizes","total","layout","onPageChange","onSizeChange"])):e.createCommentVNode("",!0)],4)}const b=R(be,[["render",ke],["__scopeId","data-v-25052d16"]]),V=new Map;class we{add(n,a){return!n||typeof n!="string"?(console.warn("[ZxtTable] 渲染器名称必须是字符串"),this):!a||typeof a!="object"?(console.warn("[ZxtTable] 渲染器配置必须是对象"),this):(V.has(n)&&console.warn(`[ZxtTable] 渲染器 "${n}" 已存在,将被覆盖`),V.set(n,a),this)}get(n){return V.get(n)}delete(n){return V.delete(n)}has(n){return V.has(n)}getAll(){return Array.from(V.keys())}clear(){V.clear()}}const j=new we;function Se(t,n,a={}){if(!t||!t.itemRender)return null;const{name:o}=t.itemRender;if(o&&j.has(o)){const l=j.get(o);if(typeof l.renderItemContent=="function"){const c={data:n,field:t.field||t.prop,item:t,formData:n};try{return l.renderItemContent(a,c)}catch(s){return console.error(`[ZxtTable] 渲染器 "${o}" 执行出错:`,s),null}}}return null}b.install=function(t){t.component(b.name,b)},b.registerRenderer=ue,b.renderer=j;var _e=e.defineComponent({name:"Delete",__name:"delete",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Y=_e,ze=e.defineComponent({name:"Download",__name:"download",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"})]))}}),v=ze,Be=e.defineComponent({name:"Edit",__name:"edit",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z"}),e.createElementVNode("path",{fill:"currentColor",d:"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"})]))}}),ee=Be,Ve=e.defineComponent({name:"Plus",__name:"plus",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),te=Ve,$e=e.defineComponent({name:"Refresh",__name:"refresh",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z"})]))}}),ne=$e,Ee=e.defineComponent({name:"Search",__name:"search",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),ae=Ee,Fe=e.defineComponent({name:"Setting",__name:"setting",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),oe=Fe,Re=e.defineComponent({name:"Upload",__name:"upload",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z"})]))}}),re=Re,Te=e.defineComponent({name:"View",__name:"view",setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),le=Te;const Ne=e.defineComponent({name:"ZxtForm",props:{formColumns:{type:Array,default:()=>[]},initialFormData:{type:Object,default:()=>({})},rules:{type:Object,default:()=>({})}},emits:["submit","reset"],setup(t,{emit:n,expose:a}){const o=e.ref(null),l=e.reactive({}),c={input:"el-input",select:"el-select",date:"el-date-picker",cascader:"el-cascader"},s=r=>c[r]||"el-input",g=r=>{const m=r.type||"input",_={placeholder:r.placeholder||`请${m==="select"||m==="date"||m==="cascader"?"选择":"输入"}${r.label}`,disabled:r.disabled,style:"width: 100%"};switch(m){case"date":return{..._,type:r.dateType||"date"};case"cascader":return{..._,options:r.options,props:r.cascaderProps,clearable:r.clearable!==!1};case"select":return _;case"input":default:return _}},f=e.computed(()=>t.formColumns.map(r=>({...r,colSpan:{xs:r.xs??r.span??24,sm:r.sm??r.span??12,md:r.md??r.span??12,lg:r.lg??r.span??12,xl:r.xl??r.span??12}})));e.watch(()=>t.initialFormData,r=>{Object.keys(l).forEach(m=>{delete l[m]}),Object.assign(l,r)},{immediate:!0,deep:!0});const p=e.computed(()=>{const r={...t.rules};return Object.keys(r).length===0&&t.formColumns.length>0&&t.formColumns.forEach(m=>{m.required&&(r[m.prop]=[{required:!0,message:`请${m.type==="select"||m.type==="date"||m.type==="cascader"?"选择":"输入"}${m.label}`,trigger:m.type==="select"||m.type==="date"||m.type==="cascader"?"change":"blur"}])}),r}),h=()=>{o.value&&o.value.validate(r=>{r&&n("submit",{...l})})},i=()=>{o.value&&o.value.resetFields(),n("reset")},w=r=>()=>Se(r,l,{})||null;return a({validate:()=>o.value?o.value.validate():Promise.resolve(!1),resetFields:()=>o.value&&o.value.resetFields(),getFormData:()=>({...l})}),{formRef:o,formData:l,formRules:p,submitForm:h,resetForm:i,processedColumns:f,getComponentType:s,getComponentProps:g,renderCustomItem:w}}}),Pe={class:"zxt-form-container"};function De(t,n,a,o,l,c){const s=e.resolveComponent("el-option"),g=e.resolveComponent("el-form-item"),f=e.resolveComponent("el-col"),p=e.resolveComponent("el-row"),h=e.resolveComponent("el-form");return e.openBlock(),e.createElementBlock("div",Pe,[e.createVNode(h,{ref:"formRef",model:t.formData,rules:t.formRules,"label-width":"100px",class:"zxt-form"},{default:e.withCtx(()=>[e.createVNode(p,{gutter:20},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.processedColumns,(i,w)=>(e.openBlock(),e.createBlock(f,e.mergeProps({key:w},{ref_for:!0},i.colSpan),{default:e.withCtx(()=>[e.createVNode(g,{label:i.label,prop:i.prop,required:i.required,"label-width":i.labelWidth},{default:e.withCtx(()=>[i.type==="slot"?e.renderSlot(t.$slots,i.slotName||i.prop,{key:0,formData:t.formData,column:i},void 0,!0):i.itemRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.renderCustomItem(i)),{key:1})):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getComponentType(i.type)),e.mergeProps({key:2,modelValue:t.formData[i.prop],"onUpdate:modelValue":r=>t.formData[i.prop]=r},{ref_for:!0},t.getComponentProps(i)),{default:e.withCtx(()=>[i.type==="select"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.options,(r,m)=>(e.openBlock(),e.createBlock(s,{key:m,label:r.label,value:r.value},null,8,["label","value"]))),128)):e.createCommentVNode("",!0)]),_:2},1040,["modelValue","onUpdate:modelValue"]))]),_:2},1032,["label","prop","required","label-width"])]),_:2},1040))),128))]),_:3})]),_:3},8,["model","rules"])])}const Z=R(Ne,[["render",De],["__scopeId","data-v-baaa06c7"]]),Ze=e.defineComponent({name:"ZxtGrid",components:{ZxtTable:b,ZxtForm:Z,Plus:te,Delete:Y,Refresh:ne,Download:v,Search:ae,Edit:ee,View:le,Upload:re,Setting:oe},props:{gridOptions:{type:Object,default:()=>({id:"grid",columns:[],data:[],height:400,pageable:!0,pageSizes:[10,20,50,100],paginationLayout:"total, sizes, prev, pager, next, jumper",toolbar:null,formMode:!1,formColumns:[],initialFormData:{},rules:{}})},externalData:{type:Array,default:()=>[]}},emits:["toolbar-click","submit","reset","page-change","size-change"],setup(t,{emit:n,expose:a}){const o=e.ref(null),l=e.ref(null),c=e.ref(null),s=e.ref(1),g=e.ref(10),f=e.ref([]),p=e.ref(t.gridOptions.formMode||!0),h={Plus:te,Delete:Y,Refresh:ne,Download:v,Search:ae,Edit:ee,View:le,Upload:re,Setting:oe},i=e.computed(()=>{const d=t.gridOptions.formConfig;if(!d||!d.items)return[];const F=[...d.items];return F.some(D=>D.type==="slot"&&D.slotName==="search-actions")||F.push({type:"slot",slotName:"search-actions",span:6,labelWidth:"0px",...d.actionConfig}),F}),w=()=>{c.value?.submitForm()},r=d=>{n("search-submit",d)},m=()=>{c.value?.resetForm()},_=()=>{n("search-reset"),setTimeout(()=>{c.value?.submitForm()},0)},A=d=>{if(d)return typeof d=="object"||typeof d=="function"?d:h[d]},O=e.computed(()=>t.externalData.length>0?t.externalData:t.gridOptions.data||[]),z=e.computed(()=>O.value.length),L=(d,F)=>{switch(n("toolbar-click",{code:d,button:F,grid:o.value}),d){case"add":H();break;case"delete":I();break;case"refresh":q();break;case"export":u();break}},H=()=>{p.value=!0},I=()=>{const d=o.value?.getTableRef()?.getSelectionRows?.()||[];if(d.length===0){y.ElMessage.warning("请先选择要删除的数据");return}y.ElMessage.success(`删除 ${d.length} 条数据`)},q=()=>{y.ElMessage.success("刷新数据"),o.value?.reload?.()},u=()=>{y.ElMessage.success("导出数据")},S=d=>{n("submit",d)},$=()=>{n("reset")},U=()=>{p.value=!1},G=d=>{s.value=d.page,n("page-change",d)},J=d=>{g.value=d.size,n("size-change",d)},W=()=>o.value,K=()=>l.value,Q=()=>o.value?.getTableRef()?.getSelectionRows?.()||[],E=d=>{f.value=d},k=d=>{p.value=d};return e.watch(()=>t.gridOptions.formMode,d=>{d!==void 0&&(p.value=d)}),a({getGridRef:W,getFormRef:K,getSelectedRows:Q,reloadData:E,setFormVisible:k}),{gridRef:o,formRef:l,searchFormRef:c,currentPage:s,pageSize:g,tableData:O,total:z,isFormVisible:p,searchFormColumns:i,getIconComponent:A,handleToolbarClick:L,handleSubmit:S,handleFormReset:$,handleFormCancel:U,handlePageChange:G,handleSizeChange:J,handleSearch:w,handleSearchSubmit:r,handleReset:m,handleSearchReset:_}}}),Oe={class:"zxt-grid-container"},Le={key:1,class:"grid-search-form"},Me={class:"search-btn-group"},je={key:0,class:"grid-toolbar"};function xe(t,n,a,o,l,c){const s=e.resolveComponent("el-button"),g=e.resolveComponent("ZxtForm"),f=e.resolveComponent("ZxtTable");return e.openBlock(),e.createElementBlock("div",Oe,[t.isFormVisible?(e.openBlock(),e.createBlock(g,{key:0,ref:"formRef","form-columns":t.gridOptions.formColumns,"initial-form-data":t.gridOptions.initialFormData,rules:t.gridOptions.rules,onSubmit:t.handleSubmit,onReset:t.handleFormReset},{"form-actions":e.withCtx(()=>[e.renderSlot(t.$slots,"form-actions",{},()=>[e.createVNode(s,{onClick:t.handleFormCancel},{default:e.withCtx(()=>[...n[0]||(n[0]=[e.createTextVNode("取消",-1)])]),_:1},8,["onClick"])],!0)]),_:3},8,["form-columns","initial-form-data","rules","onSubmit","onReset"])):e.createCommentVNode("",!0),t.gridOptions.formConfig?(e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(g,{ref:"searchFormRef","form-columns":t.searchFormColumns,"initial-form-data":t.gridOptions.formConfig.data,rules:t.gridOptions.formConfig.rules,onSubmit:t.handleSearchSubmit,onReset:t.handleSearchReset},e.createSlots({"search-actions":e.withCtx(()=>[e.createElementVNode("div",Me,[e.createVNode(s,{type:"primary",icon:t.Search,onClick:t.handleSearch},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode(" 查询 ",-1)])]),_:1},8,["icon","onClick"]),e.createVNode(s,{icon:t.Refresh,onClick:t.handleReset},{default:e.withCtx(()=>[...n[2]||(n[2]=[e.createTextVNode(" 重置 ",-1)])]),_:1},8,["icon","onClick"])])]),_:2},[e.renderList(t.$slots,(p,h)=>({name:h,fn:e.withCtx(i=>[e.renderSlot(t.$slots,h,e.normalizeProps(e.guardReactiveProps(i)),void 0,!0)])}))]),1032,["form-columns","initial-form-data","rules","onSubmit","onReset"])])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[t.gridOptions.toolbar?(e.openBlock(),e.createElementBlock("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.gridOptions.toolbar.buttons,(p,h)=>(e.openBlock(),e.createBlock(s,{key:h,type:p.type||"default",size:p.size||"small",icon:t.getIconComponent(p.icon),disabled:p.disabled,onClick:i=>t.handleToolbarClick(p.code,p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.name),1)]),_:2},1032,["type","size","icon","disabled","onClick"]))),128)),e.renderSlot(t.$slots,"toolbar",{grid:t.$refs.gridRef},void 0,!0)])):e.createCommentVNode("",!0),e.createVNode(f,{ref:"gridRef",id:t.gridOptions.id,columns:t.gridOptions.columns,data:t.tableData,height:t.gridOptions.height,pageable:t.gridOptions.pageable!==!1,"current-page":t.currentPage,"page-size":t.pageSize,"page-sizes":t.gridOptions.pageSizes,total:t.total,"pagination-layout":t.gridOptions.paginationLayout,onPageChange:t.handlePageChange,onSizeChange:t.handleSizeChange},e.createSlots({_:2},[e.renderList(t.$slots,(p,h)=>({name:h,fn:e.withCtx(i=>[e.renderSlot(t.$slots,h,e.normalizeProps(e.guardReactiveProps(i)),void 0,!0)])}))]),1032,["id","columns","data","height","pageable","current-page","page-size","page-sizes","total","pagination-layout","onPageChange","onSizeChange"])])])}const x=R(Ze,[["render",xe],["__scopeId","data-v-72fcb85d"]]);B.install=function(t){t.component(B.name,B)};const Ae=[T,N,b,x,Z,B],He={install:t=>{Ae.forEach(n=>{t.component(n.name,n)})},MyButton:T,JsxButton:N,ZxtTable:b,ZxtGrid:x,ZxtForm:Z,ZxtPagination:B,renderer:b.renderer,registerRenderer:b.registerRenderer};C.JsxButton=N,C.MyButton=T,C.ZxtForm=Z,C.ZxtGrid=x,C.ZxtPagination=B,C.ZxtTable=b,C.default=He,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zxt-table",
3
3
  "private": false,
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "type": "module",
6
6
  "description": "一个基于 Vue 3 和 Element Plus 的高级表格、表单组件库",
7
7
  "keywords": [
@@ -48,8 +48,7 @@
48
48
  "vue": "^3.5.22"
49
49
  },
50
50
  "dependencies": {
51
- "@element-plus/icons-vue": "^2.3.2",
52
- "zxt-table": "file:.yalc/zxt-table"
51
+ "@element-plus/icons-vue": "^2.3.2"
53
52
  },
54
53
  "scripts": {
55
54
  "dev": "vite",