import{s as G}from"./pinia-1fd00649.js";import{b as $,R as E}from"./index-b13629db.js";import{V as O}from"./vuedraggable-fb995778.js";import{P as h,N as L,U as B,q as g,K as v,V as j,W as Y,T as X,B as H,r as R,X as q,Y as J,Z as C,_ as I,$ as K,J as k,a0 as W,u as Z,G as Q,D as ee}from"./naive-ui-9443d288.js";import{e as w,i as te,r as x,aa as e,l as A,E as M,p as ae,M as U,F as N,x as le,n as ie,c as r,q as b}from"./@vue-0f114043.js";import{p as ue}from"./print-js-819a679c.js";import{u as ne}from"./hook-1ce4b33f.js";import{u as y,w as se}from"./xlsx-1a040596.js";import{d as oe}from"./dayjs-e34bfade.js";import"./vue-demi-71ba0ef2.js";import"./pinia-plugin-persistedstate-d93b4f94.js";import"./vue-i18n-37f9b77c.js";import"./@intlify-bd5dfa46.js";import"./lodash-es-c8e56e34.js";import"./vue-router-ed35b26a.js";import"./@vueuse-27b0db77.js";import"./screenfull-578bfdd4.js";import"./date-fns-7f923de7.js";import"./vueuc-4d05699f.js";import"./evtd-b614532e.js";import"./seemly-dc6f1e91.js";import"./@css-render-ad88a31e.js";import"./vooks-ab318924.js";import"./vdirs-b0483831.js";import"./@juggle-41516555.js";import"./css-render-57962bc1.js";import"./@emotion-8a8e73f6.js";import"./treemate-25c27bff.js";import"./date-fns-tz-230e778e.js";import"./async-validator-dee29e8b.js";import"./vue-d5390e61.js";import"./sortablejs-77186f55.js";const re=t=>t.map(l=>(l.fixed&&(l.fixed==="right"?l.rightFixedActivated=!0:l.leftFixedActivated=!0),l.resizable&&(l.resizeColumnActivated=!0),l)),de=w({name:"TableSetting",emits:["columnsUpdate"],setup(t,{emit:a}){const l=$(),i=te("tableSettingProvider",{}),u=x(re(i.modelColumns.value)),d=x(!0),{themeValue:s}=G(l);return{settingOptions:u,handleDraggableEnd:()=>{a("columnsUpdate",u.value)},handleFixedClick:(p,c)=>{const n=`${p}FixedActivated`,o=u.value[c];n==="leftFixedActivated"?o.rightFixedActivated=!1:n==="rightFixedActivated"&&(o.leftFixedActivated=!1),o[n]=!o[n],o[n]?o.fixed=p:o.fixed=void 0,u.value[c]=o,a("columnsUpdate",u.value)},disableDraggable:d,FixedPopoverIcon:p=>{const{element:c,name:n,tooltip:o,fn:_,index:D,fixed:F,key:V}=p;return e(B,null,{trigger:()=>e(E,{customClassName:`draggable-item__icon ${c[V]?"draggable-item__icon--actived":""}`,name:n,size:"18",onClick:_.bind(this,F,D)},null),default:()=>o})},handleResizeColumnClick:p=>{const c=u.value[p];c.resizeColumnActivated=!c.resizeColumnActivated,c.resizable=c.resizeColumnActivated,u.value[p]=c,a("columnsUpdate",u.value)},themeValue:s}},render(){return e(B,{trigger:"click",placement:"bottom",showArrow:!1,raw:!0},{trigger:()=>e(E,{customClassName:"ray-table__setting",name:"setting",size:"18"},null),default:()=>e(h,{bordered:!1,class:"table-setting__card"},{default:()=>e(O,{class:["ray-table__setting-option--draggable"],modelValue:this.settingOptions,"onUpdate:modelValue":t=>this.settingOptions=t,itemKey:"key",disabled:!this.disableDraggable,onEnd:this.handleDraggableEnd.bind(this)},{item:({element:t,index:a})=>e("div",{class:["draggable-item",this.themeValue?"draggable-item--dark":""]},[e(E,{customClassName:"draggable-item__d--icon",name:"draggable",size:"18"},null),e(L,null,{default:()=>[e("span",null,[t.title])]}),this.FixedPopoverIcon({element:t,name:"left_arrow",tooltip:"左固定",fn:this.handleFixedClick,index:a,fixed:"left",key:"leftFixedActivated"}),e(B,null,{trigger:()=>e(E,{customClassName:`draggable-item__icon ${t.resizeColumnActivated?"draggable-item__icon--actived":""}`,name:"resize_h",size:"18",onClick:this.handleResizeColumnClick.bind(this,a)},null),default:()=>"修改列宽"}),this.FixedPopoverIcon({element:t,name:"right_arrow",tooltip:"右固定",fn:this.handleFixedClick,index:a,fixed:"right",key:"rightFixedActivated"})])})})})}}),z=w({name:"TableAction",props:{tooltip:{type:String,required:!0},negativeText:{type:String,default:"取消"},positiveText:{type:String,default:"确认"},icon:{type:String,required:!0},iconSize:{type:Number,default:18}},emits:["positive","negative"],setup(t,{emit:a}){const l=x(!1);return{handleEmit:u=>{a(u==="positive"?"positive":"negative"),l.value=!1},showPopoconfirm:l}},render(){return e(j,{show:this.showPopoconfirm,"onUpdate:show":t=>this.showPopoconfirm=t,showArrow:!0},{trigger:()=>e(E,{name:this.icon,size:this.iconSize,customClassName:"ray-table-icon"},null),default:()=>this.tooltip,action:()=>e(g,null,{default:()=>[e(v,{size:"small",ghost:!0,onClick:this.handleEmit.bind(this,"negative")},{default:()=>[this.negativeText]}),e(v,{size:"small",ghost:!0,type:"info",onClick:this.handleEmit.bind(this,"positive")},{default:()=>[this.positiveText]})]})})}}),ce={...Y,rightClickMenu:{type:Array,default:()=>[]},title:{type:[String,Object],default:""},action:{type:Boolean,default:!0},actionExtra:{type:Object,default:()=>({})},showMenu:{type:Boolean,default:!0},exportTooltip:{type:String,default:"是否导出为Excel表格?"},exportType:{type:String,default:"xlsx"},exportPositiveText:{type:String,default:"确认"},exportNegativeText:{type:String,default:"取消"},exportFilename:{type:String,default:""},printPositiveText:{type:String,default:"确认"},printNegativeText:{type:String,default:"取消"},printTooltip:{type:String,default:"是否打印该表格?"},printType:{type:String,default:"html"},printOptions:{type:Object,default:()=>({})},printIcon:{type:String,default:"print"},exportExcelIcon:{type:String,default:"export_excel"},tableHeaderSpace:{type:String,default:"10px"},bordered:{type:Boolean,default:!0}},pe=t=>t.reduce((l,i)=>(l[i.key]=i.title,l),{}),me=(t,a,l)=>{for(let i=t.s.c;i<=t.e.c;i++){const u=y.encode_col(i)+"1";a[u].v=l[a[u].v]}},he=async(t,a,l={})=>{await new Promise((i,u)=>{if(t!=null&&t.length){const d=pe(a??[]),s=y.json_to_sheet(t),m=y.book_new(),f=l.filename?l.filename+".xlsx":oe().format("YYYY-MM-DD")+"导出表格.xlsx";y.book_append_sheet(m,s,"Data");const T=y.decode_range(s["!ref"]);a!=null&&a.length&&me(T,s,d),se(m,f),i()}else u()})},S=w({name:"RayTable",props:ce,emits:["update:columns","menuSelect","exportSuccess","exportError"],setup(t,{emit:a}){const l=ne(),i=A(()=>t.rightClickMenu),u=A({get:()=>t.columns,set:n=>{a("update:columns",n)}}),d=M({x:0,y:0,showMenu:!1});let s=-1;const m=A(()=>({"--ray-table-header-space":t.tableHeaderSpace}));ae("tableSettingProvider",{modelRightClickMenu:i,modelColumns:u});const f=n=>{u.value=n},T=(n,o)=>{a("menuSelect",n,s,o),d.showMenu=!1},P=(n,o)=>{var D;return{...(D=t.rowProps)==null?void 0:D.call(t,n,o),onContextmenu:F=>{F.preventDefault(),s=o,d.showMenu=!1,ie().then(()=>{d.showMenu=!0,d.x=F.clientX,d.y=F.clientY})}}},p=async()=>{if(t.data.length&&t.columns.length)try{await he(t.data,t.columns,{filename:t.exportFilename}),a("exportSuccess")}catch{a("exportError")}},c=()=>{const n=Object.assign({},t.printOptions,{printable:l,type:t.printType,documentTitle:t.printOptions.documentTitle?t.printOptions.documentTitle:"表格"});ue(n)};return{tableUUID:l,handleColumnsUpdate:f,...U(d),handleRowProps:P,handleRightMenuSelect:T,handleExportPositive:p,handlePrintPositive:c,cssVars:m}},render(){return e(h,{class:"ray-table",bordered:this.bordered,style:[this.cssVars]},{default:()=>e(N,null,[e(X,le({id:this.tableUUID},this.$props,{rowProps:this.handleRowProps.bind(this)}),{empty:()=>{var t,a;return(a=(t=this.$slots)==null?void 0:t.empty)==null?void 0:a.call(t)},loading:()=>{var t,a;return(a=(t=this.$slots)==null?void 0:t.loading)==null?void 0:a.call(t)}}),this.showMenu?e(H,{show:this.showMenu,placement:"bottom-start",trigger:"manual",x:this.x,y:this.y,options:this.rightClickMenu,onClickoutside:()=>this.showMenu=!1,onSelect:this.handleRightMenuSelect.bind(this)},null):""]),header:()=>this.title,"header-extra":()=>this.action?e("div",{class:"ray-table-header-extra__space"},[e(z,{icon:this.printIcon,tooltip:this.printTooltip,positiveText:this.printPositiveText,negativeText:this.printNegativeText,onPositive:this.handlePrintPositive.bind(this)},null),e(R,{vertical:!0},null),e(z,{icon:this.exportExcelIcon,tooltip:this.exportTooltip,positiveText:this.exportPositiveText,negativeText:this.exportNegativeText,onPositive:this.handleExportPositive.bind(this)},null),e(R,{vertical:!0},null),e(de,{onColumnsUpdate:this.handleColumnsUpdate.bind(this)},null)]):"",footer:()=>{var t,a;return(a=(t=this.$slots).tableFooter)==null?void 0:a.call(t)}})}});const ge={value:{type:Boolean,default:!0},collapseToggleText:{type:Array,default:()=>["展开","收起"]},bordered:{type:Boolean,default:!0},...q},fe=w({name:"RayCollapseGrid",props:ge,emits:["updateValue"],setup(t,{emit:a}){const l=x(t.value),i=()=>{l.value=!l.value,a("updateValue",l.value)};return{modelCollapsed:l,handleCollapse:i,CollapseIcon:()=>e("div",{class:"collapse-icon",onClick:i.bind(this)},[e("span",null,[l.value?t.collapseToggleText[0]:t.collapseToggleText[1]]),e(E,{customClassName:`collapse-icon--arrow ${l.value?"":"collapse-icon--arrow__expanded"}`,name:"expanded",size:"14"},null)])}},render(){return e(h,{bordered:this.bordered},{default:()=>e(J,{class:"ray-collapse-grid",collapsed:this.modelCollapsed,xGap:this.xGap||12,yGap:this.yGap||18,cols:this.cols,collapsedRows:this.collapsedRows},{default:()=>{var t,a;return[(a=(t=this.$slots).default)==null?void 0:a.call(t),e(C,{suffix:!0,class:"ray-collapse-grid__suffix--btn"},{default:()=>[e(g,{justify:"end"},{default:()=>{var l,i;return[(i=(l=this.$slots).action)==null?void 0:i.call(l),this.CollapseIcon()]}})]})]}})})}}),Je=w({name:"TableView",setup(){const t=[{title:"Name",key:"name"},{title:"Age",key:"age"},{title:"Address",key:"address"},{title:"Tags",key:"tags",render:s=>s.tags.map(f=>b(ee,{style:{marginRight:"6px"},type:"info",bordered:!1},{default:()=>f}))},{title:"Action",key:"actions",render:s=>b(v,{size:"small"},{default:()=>"Send Email"})}],a=x([...t].map(s=>({...s,width:400}))),l=x([{key:0,name:"John Brown",age:32,address:"New York No. 1 Lake Park",tags:["nice","developer"]},{key:1,name:"Jim Green",age:42,address:"London No. 1 Lake Park",tags:["wow"]},{key:2,name:"Joe Black",age:32,address:"Sidney No. 1 Lake Park",tags:["cool","teacher"]}]),i=[{label:"编辑",key:"edit"},{label:()=>b("span",{style:{color:"red"}},"删除"),key:"delete"}],u=M({gridItemCount:4,gridCollapsedRows:1,tableLoading:!1}),d=(s,m)=>{s==="delete"&&l.value.splice(m,1)};return{...U(u),tableData:l,actionColumns:a,baseColumns:t,tableMenuOptions:i,handleMenuSelect:d}},render(){return e(Q,null,{default:()=>[e(h,{title:"RayTable"},{default:()=>[e("p",null,[r("该组件基于 Naive UI DataTable 组件封装. 实现右键菜单, 表格标题, 导出为 excel 操作栏等功能")]),e("p",null,[r("RayTable 完全继承 DataTable 的所有属性与方法")]),e("p",null,[r("相关拓展 props 属性, 可以在源码位置 src/components/RayTable/src/props.ts 中查看相关代码与注释")]),e("p",null,[r("该组件可以配合 RayCollapseGird 组件使用实现可折叠搜索栏")])]}),e(h,{style:["margin-top: 18px"]},{default:()=>e(g,{vertical:!0},{default:()=>[e(g,{style:["margin-top: 18px"]},{default:()=>[r("该组件基于 NGird 实现, 但是由于 css grid 限制, 不能对于 NGridItem 组件进行二次封装, 所以使用时必须配合 NGridItem 使用才能实现示例效果(使用 NGridItem 包裹元素即可).")]}),e(g,{style:["margin-top: 18px"]},{default:()=>[e(g,{align:"center"},{default:()=>[r("数量 "),e(I,{value:this.gridItemCount,"onUpdate:value":t=>this.gridItemCount=t},null)]}),e(g,{align:"center"},{default:()=>[r("行数 "),e(I,{value:this.gridCollapsedRows,"onUpdate:value":t=>this.gridCollapsedRows=t},null)]})]}),e(fe,{collapsedRows:this.gridCollapsedRows,cols:this.gridItemCount,onUpdateValue:t=>window.$message.info(`我是 RayCollapseGrid 组件${t?"收起":"展开"}的回调函数`)},{action:()=>e(N,null,[e(v,null,{default:()=>[r("搜索")]}),e(v,null,{default:()=>[r("重置")]})]),default:()=>e(N,null,[e(C,null,{default:()=>[e(K,null,null)]}),e(C,null,{default:()=>[e(k,null,null)]}),e(C,null,{default:()=>[e(W,{type:"datetimerange",clearable:!0},null)]}),e(C,null,{default:()=>[e(k,null,null)]}),e(C,null,{default:()=>[e(k,null,null)]})])})]})}),e(h,{title:"基础使用",style:["margin-top: 18px"]},{default:()=>[e(S,{title:b(Z,{onUpdateValue:t=>this.tableLoading=t},{}),data:this.tableData,columns:this.baseColumns,action:!1,pagination:{pageSize:10},loading:this.tableLoading},{tableFooter:()=>"表格的底部内容区域,有时候你可能会用上"})]}),e(h,{style:["margin-top: 18px"]},{header:()=>e("div",null,[e("p",null,[r("使用响应式方法代理 columns 并且打开 action 则可以启用操作栏(v-model:columns)")]),e("p",null,[r("拖拽操作栏动态切换表格列")]),e("p",null,[r("点击左右固定按钮, 即可动态固定列")]),e("p",null,[r("点击修改列宽度, 即可拖动列修改宽度")]),e("p",null,[r("点击导出按钮即可导出 excel 表格, 默认以列为表头输出")]),e("p",null,[r("点击打印按钮即可打印该表格")])]),default:()=>e(S,{title:b(k,{placeholder:"请输入检索条件",style:["width: 200px"]}),data:this.tableData,columns:this.actionColumns,"onUpdate:columns":t=>this.actionColumns=t},null)}),e(h,{title:"右键菜单",style:["margin-top: 18px"]},{default:()=>[e(S,{title:"右键菜单表格",action:!1,data:this.tableData,columns:this.baseColumns,rightClickMenu:this.tableMenuOptions,onMenuSelect:this.handleMenuSelect.bind(this)},null)]})]})}});export{Je as default};