import{s as H}from"./pinia-15a322aa.js";import{b as Y,R as C,e as V}from"./index-d84b3024.js";import{V as X}from"./vuedraggable-4f23b1e5.js";import{Q as _,N as q,L as v,Y as J,o as G,I as S,Z as K,X as Q,y as W,_ as Z,O as ee,P as E,W as O,$ as te,a0 as k,U as b,a1 as le,H as N,a2 as ae,n as ie,E as ne,B as se}from"./naive-ui-54973a8c.js";import{e as F,i as R,r as m,ab as t,l as T,E as L,p as oe,M as j,F as B,x as ue,n as re,c as o,q as D}from"./@vue-a5f4faa6.js";import{s as z}from"./screenfull-578bfdd4.js";import{p as de}from"./print-js-819a679c.js";import{u as w,w as ce}from"./xlsx-1a040596.js";import{d as pe}from"./dayjs-e34bfade.js";import"./vue-demi-71ba0ef2.js";import"./lodash-es-1a3ec8cd.js";import"./pinia-plugin-persistedstate-d93b4f94.js";import"./vue-i18n-1b078a41.js";import"./@intlify-bd5dfa46.js";import"./vue-router-dc1ee7d4.js";import"./@vueuse-a5326c57.js";import"./date-fns-7f923de7.js";import"./vueuc-b41d756f.js";import"./evtd-b614532e.js";import"./seemly-dc6f1e91.js";import"./@css-render-379872f5.js";import"./vooks-a21d2fcd.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-4f7d146d.js";import"./sortablejs-77186f55.js";const he=e=>e.map(a=>(a.fixed&&(a.fixed==="right"?a.rightFixedActivated=!0:a.leftFixedActivated=!0),a.resizable&&(a.resizeColumnActivated=!0),a)),me=F({name:"TableSetting",emits:["columnsUpdate"],setup(e,{emit:l}){const a=R("tableSettingProvider",{}),i=Y(),n=m(he(a.modelColumns.value)),p=m(!0),{themeValue:s}=H(i);return{settingOptions:n,handleDraggableEnd:()=>{l("columnsUpdate",n.value)},handleFixedClick:(g,d)=>{const f=`${g}FixedActivated`,c=n.value[d];f==="leftFixedActivated"?c.rightFixedActivated=!1:f==="rightFixedActivated"&&(c.leftFixedActivated=!1),c[f]=!c[f],c[f]?c.fixed=g:c.fixed=void 0,n.value[d]=c,l("columnsUpdate",n.value)},disableDraggable:p,FixedPopoverIcon:g=>{const{element:d,name:f,tooltip:c,fn:P,index:u,fixed:x,key:U}=g;return t(v,null,{trigger:()=>t(C,{customClassName:`draggable-item__icon ${d[U]?"draggable-item__icon--actived":""}`,name:f,size:"18",onClick:P.bind(this,x,u)},null),default:()=>c})},handleResizeColumnClick:g=>{const d=n.value[g];d.resizeColumnActivated=!d.resizeColumnActivated,d.resizable=d.resizeColumnActivated,n.value[g]=d,l("columnsUpdate",n.value)},themeValue:s}},render(){return t(v,{trigger:"click",placement:"bottom",showArrow:!1,raw:!0},{trigger:()=>t(C,{customClassName:"ray-table__setting",name:"setting",size:"18"},null),default:()=>t(_,{bordered:!1,class:"table-setting__card"},{default:()=>t(X,{class:["ray-table__setting-option--draggable"],modelValue:this.settingOptions,"onUpdate:modelValue":e=>this.settingOptions=e,itemKey:"key",disabled:!this.disableDraggable,onEnd:this.handleDraggableEnd.bind(this)},{item:({element:e,index:l})=>t("div",{class:["draggable-item",this.themeValue?"draggable-item--dark":""]},[t(C,{customClassName:"draggable-item__d--icon",name:"draggable",size:"18"},null),t(q,null,{default:()=>[t("span",null,[e.title])]}),this.FixedPopoverIcon({element:e,name:"left_arrow",tooltip:"左固定",fn:this.handleFixedClick,index:l,fixed:"left",key:"leftFixedActivated"}),t(v,null,{trigger:()=>t(C,{customClassName:`draggable-item__icon ${e.resizeColumnActivated?"draggable-item__icon--actived":""}`,name:"resize_h",size:"18",onClick:this.handleResizeColumnClick.bind(this,l)},null),default:()=>"修改列宽"}),this.FixedPopoverIcon({element:e,name:"right_arrow",tooltip:"右固定",fn:this.handleFixedClick,index:l,fixed:"right",key:"rightFixedActivated"})])})})})}}),$=F({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},popoverContent:{type:String,required:!0}},emits:["positive","negative"],setup(e,{emit:l}){const a=m(!1);return{handleEmit:n=>{l(n==="positive"?"positive":"negative"),a.value=!1},showPopoconfirm:a}},render(){return t(v,null,{trigger:()=>t(J,{show:this.showPopoconfirm,"onUpdate:show":e=>this.showPopoconfirm=e,showArrow:!0},{trigger:()=>t(C,{name:this.icon,size:this.iconSize,customClassName:"ray-table-icon"},null),default:()=>this.tooltip,action:()=>t(G,null,{default:()=>[t(S,{size:"small",ghost:!0,onClick:this.handleEmit.bind(this,"negative")},{default:()=>[this.negativeText]}),t(S,{size:"small",ghost:!0,type:"info",onClick:this.handleEmit.bind(this,"positive")},{default:()=>[this.positiveText]})]})}),default:()=>this.popoverContent})}});const ge=F({name:"TableSize",emits:["changeSize"],setup(e,{emit:l}){const a=R("tableSettingProvider",{}),i=m(!1),n=m(a.size),p=T({get:()=>a.size,set:r=>{n.value=r}}),s=m([{label:"默认",key:"medium"},{label:"紧凑",key:"small"},{label:"宽松",key:"large"}]);return{sizeOptions:s,currentSize:n,handleDropdownClick:r=>{s.value.forEach(y=>{y.key===r&&(p.value=r,i.value=!1,l("changeSize",r))})},popoverShow:i}},render(){return t(v,{show:this.popoverShow,"onUpdate:show":e=>this.popoverShow=e,trigger:"click",placement:"bottom",showArrow:!1,raw:!0},{trigger:()=>t(v,null,{trigger:()=>t(C,{name:"adjustment",size:"18",customClassName:"ray-table-icon"},null),default:()=>"表格密度"}),default:()=>t(_,{bordered:!1,class:"ray-table__table-size"},{default:()=>[t("div",{class:"table-size__dropdown"},[t("div",{class:"table-size__dropdown-wrapper"},[this.sizeOptions.map(e=>t("div",{class:["dropdown-item",e.key===this.currentSize?"dropdown-item--active":""],key:e.key,onClick:this.handleDropdownClick.bind(this,e.key)},[t("div",{class:"drop-item__label"},[e.label])]))])])]})})}});const fe=F({name:"TableScreenfull",setup(){const e=R("tableSettingProvider",{}),l=T(()=>e.rayTableUUID);let a=z.isFullscreen;return{handleScreenfull:()=>{const n=document.getElementById(l.value);a=!a,n&&z.isEnabled&&a?z.request(n):z.exit()}}},render(){return t(v,null,{trigger:()=>t(C,{name:"fullscreen",size:"18",customClassName:"ray-table-icon tay-table-icon__screenfull",onClick:this.handleScreenfull.bind(this)},null),default:()=>"全屏表格"})}}),be={...K,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:!1}},Ce=e=>e.reduce((a,i)=>(a[i.key]=i.title,a),{}),ye=(e,l,a)=>{for(let i=e.s.c;i<=e.e.c;i++){const n=w.encode_col(i)+"1";l[n].v=a[l[n].v]}},ve=async(e,l,a={})=>{await new Promise((i,n)=>{if(e!=null&&e.length){const p=Ce(l??[]),s=w.json_to_sheet(e),h=w.book_new(),r=a.filename?a.filename+".xlsx":pe().format("YYYY-MM-DD")+"导出表格.xlsx";w.book_append_sheet(h,s,"Data");const y=w.decode_range(s["!ref"]);l!=null&&l.length&&ye(y,s,p),ce(h,r),i()}else n()})},Fe=F({name:"RayTable",props:be,emits:["update:columns","menuSelect","exportSuccess","exportError"],setup(e,{emit:l}){const a=V(),i=V(),n=T(()=>e.rightClickMenu),p=T({get:()=>e.columns,set:u=>{l("update:columns",u)}}),s=L({x:0,y:0,showMenu:!1});let h=-1;const r=T(()=>({"--ray-table-header-space":e.tableHeaderSpace})),y=m(e.size);oe("tableSettingProvider",{modelRightClickMenu:n,modelColumns:p,size:e.size,rayTableUUID:i});const I=u=>{p.value=u},g=(u,x)=>{l("menuSelect",u,h,x),s.showMenu=!1},d=(u,x)=>{var M;return{...(M=e.rowProps)==null?void 0:M.call(e,u,x),onContextmenu:A=>{A.preventDefault(),h=x,s.showMenu=!1,re().then(()=>{s.showMenu=!0,s.x=A.clientX,s.y=A.clientY})}}},f=async()=>{if(e.data.length&&e.columns.length)try{await ve(e.data,e.columns,{filename:e.exportFilename}),l("exportSuccess")}catch{l("exportError")}},c=()=>{const u=Object.assign({},e.printOptions,{printable:a,type:e.printType,documentTitle:e.printOptions.documentTitle?e.printOptions.documentTitle:"表格"});de(u)},P=u=>{y.value=u};return{tableUUID:a,rayTableUUID:i,handleColumnsUpdate:I,...j(s),handleRowProps:d,handleRightMenuSelect:g,handleExportPositive:f,handlePrintPositive:c,cssVars:r,handleChangeTableSize:P,tableSize:y}},render(){return t(_,{class:"ray-table",bordered:this.bordered,style:[this.cssVars],id:this.rayTableUUID},{default:()=>t(B,null,[t(Q,ue({id:this.tableUUID},this.$props,{rowProps:this.handleRowProps.bind(this),size:this.tableSize}),{empty:()=>{var e,l;return(l=(e=this.$slots)==null?void 0:e.empty)==null?void 0:l.call(e)},loading:()=>{var e,l;return(l=(e=this.$slots)==null?void 0:e.loading)==null?void 0:l.call(e)}}),this.showMenu?t(W,{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?t("div",{class:"ray-table-header-extra__space"},[t($,{icon:this.printIcon,tooltip:this.printTooltip,popoverContent:"打印表格",positiveText:this.printPositiveText,negativeText:this.printNegativeText,onPositive:this.handlePrintPositive.bind(this)},null),t($,{icon:this.exportExcelIcon,tooltip:this.exportTooltip,popoverContent:"导出表格",positiveText:this.exportPositiveText,negativeText:this.exportNegativeText,onPositive:this.handleExportPositive.bind(this)},null),t(ge,{onChangeSize:this.handleChangeTableSize.bind(this)},null),t(fe,null,null),t(me,{onColumnsUpdate:this.handleColumnsUpdate.bind(this)},null)]):"",footer:()=>{var e,l;return(l=(e=this.$slots).tableFooter)==null?void 0:l.call(e)}})}});const xe={value:{type:Boolean,default:!0},collapseToggleText:{type:Array,default:()=>["展开","收起"]},bordered:{type:Boolean,default:!1},...Z},Ee=F({name:"RayCollapseGrid",props:xe,emits:["updateValue"],setup(e,{emit:l}){const a=m(e.value),i=()=>{a.value=!a.value,l("updateValue",a.value)};return{modelCollapsed:a,handleCollapse:i,CollapseIcon:()=>t("div",{class:"collapse-icon",onClick:i.bind(this)},[t("span",null,[a.value?e.collapseToggleText[0]:e.collapseToggleText[1]]),t(C,{customClassName:`collapse-icon--arrow ${a.value?"":"collapse-icon--arrow__expanded"}`,name:"expanded",size:"14"},null)])}},render(){return t(_,{bordered:this.bordered},{default:()=>t(ee,{class:"ray-collapse-grid",collapsed:this.modelCollapsed,xGap:this.xGap||12,yGap:this.yGap||18,cols:this.cols,collapsedRows:this.collapsedRows},{default:()=>{var e,l;return[(l=(e=this.$slots).default)==null?void 0:l.call(e),t(E,{suffix:!0,class:"ray-collapse-grid__suffix--btn"},{default:()=>[t(G,{justify:"end"},{default:()=>{var a,i;return[(i=(a=this.$slots).action)==null?void 0:i.call(a),this.CollapseIcon()]}})]})]}})})}}),tt=F({name:"TableView",setup(){const e=[{title:"Name",key:"name"},{title:"Age",key:"age"},{title:"Address",key:"address"},{title:"Tags",key:"tags",render:s=>s.tags.map(r=>D(se,{style:{marginRight:"6px"},type:"info",bordered:!1},{default:()=>r}))},{title:"Action",key:"actions",render:s=>D(S,{size:"small"},{default:()=>"Send Email"})}],l=m([...e].map(s=>({...s,width:400}))),a=m([{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:()=>D("span",{style:{color:"red"}},"删除"),key:"delete"}],n=L({gridItemCount:4,gridCollapsedRows:1,tableLoading:!1}),p=(s,h)=>{s==="delete"&&a.value.splice(h,1)};return{...j(n),tableData:a,actionColumns:l,baseColumns:e,tableMenuOptions:i,handleMenuSelect:p}},render(){return t(ne,null,{default:()=>[t(O,null,{default:()=>[o("RayTable 组件使用")]}),t(te,{alignText:!0},{default:()=>[t(k,null,{default:()=>[o("该组件基于 Naive UI DataTable 组件封装。实现右键菜单、表格标题、导出为 excel 操作栏等功能")]}),t(k,null,{default:()=>[o("RayTable 完全继承 DataTable 的所有属性与方法")]}),t(k,null,{default:()=>[o("相关拓展 props 属性,可以在源码位置 src/components/RayTable/src/props.ts 中查看相关代码与注释")]}),t(k,null,{default:()=>[o("该组件可以配合 RayCollapseGird 组件使用实现可折叠搜索栏")]})]}),t(O,null,{default:()=>[o("配合 RayCollapseGird 组件使用与 RayTable 拓展功能")]}),t(b,null,{default:()=>[o("使用响应式方法代理 columns 并且打开 action 则可以启用操作栏(v-model:columns)")]}),t(b,null,{default:()=>[o("拖拽操作栏动态切换表格列")]}),t(b,null,{default:()=>[o("点击左右固定按钮,即可动态固定列")]}),t(b,null,{default:()=>[o("点击修改列宽度,即可拖动列修改宽度")]}),t(b,null,{default:()=>[o("点击导出按钮即可导出 excel 表格,默认以列为表头输出")]}),t(b,null,{default:()=>[o("点击打印按钮即可打印该表格")]}),t(b,null,{default:()=>[o("右键菜单")]}),t(b,null,{default:()=>[o("全屏表格")]}),t(Ee,{bordered:!1,collapsedRows:this.gridCollapsedRows,cols:this.gridItemCount,onUpdateValue:e=>window.$message.info(`我是 RayCollapseGrid 组件${e?"收起":"展开"}的回调函数`)},{action:()=>t(B,null,[t(S,{type:"primary"},{default:()=>[o("搜索")]}),t(S,null,{default:()=>[o("重置")]})]),default:()=>t(B,null,[t(E,null,{default:()=>[t(le,null,null)]}),t(E,null,{default:()=>[t(N,null,null)]}),t(E,null,{default:()=>[t(ae,{type:"datetimerange",clearable:!0},null)]}),t(E,null,{default:()=>[t(N,null,null)]}),t(E,null,{default:()=>[t(N,null,null)]})])}),t(Fe,{style:"margin-top: 18px",title:D(ie,{onUpdateValue:e=>this.tableLoading=e},{}),data:this.tableData,columns:this.baseColumns,pagination:{pageSize:10},loading:this.tableLoading,rightClickMenu:this.tableMenuOptions,onMenuSelect:this.handleMenuSelect.bind(this)},{tableFooter:()=>"表格的底部内容区域,有时候你可能会用上"})]})}});export{tt as default};