ray-template/assets/Table-e8660bb2.js
XiaoDaiGua-Ray 5dda627d63 v4.2.3
2023-10-14 17:20:31 +08:00

2 lines
7.5 KiB
JavaScript

import{d as h,h as g,q as x}from"./index-0017ec2b.js";import{u as T}from"./vue-hooks-plus@1.8.2_vue@3.3.4-df6d3964.js";import"./lodash@4.17.21-e6f077ad.js";import"./js-cookie@3.0.5-19aa770d.js";import"./qs@6.11.2-83b75eda.js";import{p as R}from"./print-js@1.6.0-4c3d86b1.js";const C={...naive.dataTableProps,title:{type:[String,Number,Object],default:null},toolOptions:{type:Array},coverTool:{type:Boolean,default:!1},contextMenuOptions:{type:Array},disabledContextMenu:{type:Boolean,default:!1},onContextMenuClick:{type:[Function,Array],default:null},downloadTableOptions:{type:Object,default:()=>({})},wrapperBordered:{type:Boolean,default:!1},printTableOptions:{type:Object,default:()=>({})},onDownloadSuccess:{type:[Function,Array],default:null},onDownloadError:{type:[Function,Array],default:null},onUpdateColumns:{type:[Function,Array],default:null},"onUpdate:columns":{type:[Function,Array],default:null}},p={tableIconSize:"18",tableKey:Symbol("r-table")},A=Vue.defineComponent({name:"TableSizeSelect",props:{onChangeSize:{type:[Function,Array],default:null},...C},setup(e){const t=Vue.ref(!1);return{size:Vue.ref(e.size),sizeOptions:[{label:"默认",value:"medium"},{label:"紧凑",value:"small"},{label:"宽松",value:"large"}],popoverShow:t,updatePopselectValue:a=>{const{onChangeSize:o}=e;o&&g(o,a)}}},render(){return Vue.createVNode(naive.NPopselect,{value:this.size,"onUpdate:value":e=>this.size=e,options:this.sizeOptions,trigger:"click",onUpdateValue:this.updatePopselectValue.bind(this)},{default:()=>[Vue.createVNode(naive.NPopover,{showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:"adjustment",size:p.tableIconSize,cursor:"pointer"},null),default:()=>"密度"})]})}}),F=Vue.defineComponent({name:"TableFullscreen",setup(){const{wrapperRef:e}=Vue.inject(p.tableKey,{}),[t,{toggleFullscreen:l}]=T(e);return{toggleFullscreen:l,isFullscreen:t}},render(){return Vue.createVNode(naive.NPopover,{showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:"fullscreen",size:p.tableIconSize,cursor:"pointer",onClick:this.toggleFullscreen.bind(this)},null),default:()=>this.isFullscreen?"取消全屏":"全屏表格"})}}),P=()=>Vue.h(h,{name:"draggable",size:p.tableIconSize}),S=({icon:e,title:t,onClick:l,customClassName:s})=>Vue.createVNode(naive.NPopover,{showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:e,size:p.tableIconSize,cursor:"pointer",customClassName:s,onClick:l==null?void 0:l.bind(null)},null),default:()=>t}),w=(e,t)=>{if(!t)return[null,null];for(let l=0;l<t.length;++l){const s=t[l];if(s.key===e.key)return[t,l];const[u,a]=w(e,s.children);if(u&&a!==null)return[u,a]}return[null,null]},k=Vue.defineComponent({name:"TableC",props:{...C,onUpdateColumn:{type:[Function,Array],default:null}},setup(e){const t=Vue.computed({get:()=>e.columns.map((o,n)=>{const{key:f,title:c,children:V,fixed:d,isResizable:b,...v}=o,N=d==="left",r=d==="right",i={...v,title:c,key:f,fixed:d,isLeftFixedActivated:N,isRightFixedActivated:r,isResizable:b};return{...i,suffix:()=>Vue.createVNode(naive.NSpace,{wrapItem:!1,style:"padding-left: 32px;"},{default:()=>[Vue.createVNode(S,{icon:"row_head",title:"固定在列首",customClassName:N?"r-table__c-tool-icon--active":"",onClick:u.bind(this,"left",i,n)},null),Vue.createVNode(naive.NPopover,{showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:"resize_h",size:p.tableIconSize,cursor:"pointer",customClassName:b?"r-table__c-tool-icon--active":"",onClick:s.bind(this,i,n)},null),default:()=>"修改列宽"}),Vue.createVNode(S,{icon:"row_end",title:"固定在列尾",customClassName:r?"r-table__c-tool-icon--active":"",onClick:u.bind(this,"right",i,n)},null)]})}}),set:()=>{}}),l=o=>{const{onUpdateColumn:n}=e;n&&g(n,o)},s=(o,n)=>{o.isResizable,o.isResizable=!o.isResizable,o.resizable=o.isResizable,t.value[n]=o,l(t.value)},u=(o,n,f)=>{const c=`${o}FixedActivated`,V=`${o==="left"?"right":"left"}FixedActivated`;n[V]=!1,n[c]=!n[c],n[c]?n.fixed=o:n.fixed=void 0,t.value[f]=n,l(t.value)};return{treeDataSource:t,treeDrop:({node:o,dragNode:n,dropPosition:f})=>{const[c,V]=w(n,t.value);if(c===null||V===null)return;c.splice(V,1);const[d,b]=w(o,t.value);d===null||b===null||(f==="before"?d.splice(b,0,n):d.splice(b+1,0,n),l(d))}}},render(){return Vue.createVNode(naive.NPopover,{displayDirective:"show",trigger:"click",showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:"setting",size:p.tableIconSize,cursor:"pointer",customClassName:"r-table__setting"},null),default:()=>Vue.createVNode(naive.NTree,{class:"r-table__c-tree",data:this.treeDataSource,blockLine:!0,draggable:!0,keyboard:!1,labelField:"title",selectable:!1,renderSwitcherIcon:P.bind(this),onDrop:this.treeDrop.bind(this)},null)})}}),M=Vue.defineComponent({name:"PrintTable",props:C,setup(e){const{uuidTable:t}=Vue.inject(p.tableKey,{});return{printTableClick:()=>{const{printTableOptions:s}=e,{type:u="html",printOptions:a={}}=s??{},o=Object.assign(a,{printable:t,type:u,documentTitle:a.documentTitle?a.documentTitle:"表格"});R(o)}}},render(){return Vue.createVNode(naive.NPopover,{showArrow:!1},{trigger:()=>Vue.createVNode(h,{name:"print",size:p.tableIconSize,cursor:"pointer",onClick:this.printTableClick.bind(this)},null),default:()=>"打印表格"})}});function I(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Vue.isVNode(e)}const B=Vue.defineComponent({name:"RTable",props:C,setup(e,t){const{expose:l}=t,s=Vue.ref(null),u=Vue.ref(null),a=x(16),o=x(16),n=Vue.reactive({x:0,y:0,showContextMenu:!1}),f=Vue.reactive({size:e.size}),c=(r,i)=>{const{onContextMenuClick:m}=e;m&&g(m,r,i),n.showContextMenu=!1},V=(r,i)=>{var z;return{...(z=e.rowProps)==null?void 0:z.call(e,r,i),onContextmenu:e.disabledContextMenu?void 0:y=>{y.preventDefault(),n.showContextMenu=!1,Vue.nextTick().then(()=>{n.showContextMenu=!0,n.x=y.clientX,n.y=y.clientY})}}},d=r=>{f.size=r},b=r=>{const{onUpdateColumns:i,"onUpdate:columns":m}=e;i&&g(i,r),m&&g(m,r)},v=()=>{const{toolOptions:r}=e;return r==null?void 0:r.map(i=>typeof i=="function"?i():i)},N=r=>{const i=()=>Vue.createVNode(Vue.Fragment,null,[Vue.createVNode(M,r,null),Vue.createVNode(A,Vue.mergeProps(r,{onChangeSize:d.bind(this)}),null),Vue.createVNode(F,null,null),Vue.createVNode(k,Vue.mergeProps(r,{onUpdateColumn:b.bind(this)}),null)]);return e.toolOptions?e.coverTool?v:()=>Vue.createVNode(Vue.Fragment,null,[i(),v()]):i};return Vue.provide(p.tableKey,{uuidTable:o,uuidWrapper:a,wrapperRef:u}),l({rTableInst:s,uuidTable:o,uuidWrapper:a}),{uuidWrapper:a,uuidTable:o,contextMenuReactive:n,rTableInst:s,combineRowProps:V,contextMenuSelect:c,privateReactive:f,tool:N,wrapperRef:u}},render(){const{tool:e}=this;return Vue.createVNode(naive.NCard,Vue.mergeProps({ref:"wrapperRef",bordered:this.wrapperBordered},{id:this.uuidWrapper}),{default:()=>Vue.createVNode(Vue.Fragment,null,[Vue.createVNode(naive.NDataTable,Vue.mergeProps({ref:"rTableInst"},{id:this.uuidTable},this.$props,this.$attrs,{rowProps:this.combineRowProps.bind(this),size:this.privateReactive.size}),{...this.$slots}),this.disabledContextMenu?null:Vue.createVNode(naive.NDropdown,{show:this.contextMenuReactive.showContextMenu,placement:"bottom-start",trigger:"manual",x:this.contextMenuReactive.x,y:this.contextMenuReactive.y,options:this.contextMenuOptions,onClickoutside:()=>this.contextMenuReactive.showContextMenu=!1,onSelect:this.contextMenuSelect.bind(this)},null)]),header:()=>this.title||Vue.createVNode("div",{style:"display: none;"},null),"header-extra":()=>{let t;return Vue.createVNode(naive.NSpace,{wrapItem:!1,align:"center"},I(t=e(this.$props))?t:{default:()=>[t]})},footer:()=>{var t,l;return(l=(t=this.$slots).tableFooter)==null?void 0:l.call(t)},action:()=>{var t,l;return(l=(t=this.$slots).tableAction)==null?void 0:l.call(t)}})}});export{B as R};