vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
2 lines (1 loc) • 1.8 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("vue"),f=require("@vuux/utils"),F=(n,u,d,m)=>{const i=c.reactive({columns:n.columns,tableData:[],isFormat:!0,selectData:[],isFixedHead:!1,model:!1,columnCount:n.columns.length}),{tableData:b,isFixedHead:v}=c.toRefs(i),g=c.computed(()=>[n.border?"is-border":"",n.stripe?"is-stripe":""].filter(Boolean)),r=(t,l=null)=>t?t.map(e=>{const a=c.reactive({data:e,id:e.id,level:l?l.level+1:1,children:[],parent:l,open:!1,select:!1,indeterminate:!1});return e.children&&e.children.length&&(a.children=r(e.children,a)),a}):[],D=t=>{for(;t?.parent;){const l=t.parent;l.select=l.children.every(e=>e.select),l.indeterminate=!l.select&&l.children.some(e=>e.select||e.indeterminate),t=l}},h=t=>{if(t.children?.length)for(let l=0;l<t.children.length;l++){const e=t.children[l];e.select=t.select,e.indeterminate=t.indeterminate,h(e)}},o=t=>{const l=[],e=a=>{if(a.select&&l.push(a.data),a.children)for(let s=0;s<a.children.length;s++)e(a.children[s])};for(let a=0;a<t.length;a++)e(t[a]);m("select",l)},S=t=>{const l=(e,a)=>{if(e.select=a,e.indeterminate=!1,e.children?.length)for(let s=0;s<e.children.length;s++)l(e.children[s],a)};for(let e=0;e<i.tableData.length;e++)l(i.tableData[e],t);o(i.tableData)},w=async(t,l)=>{t.select=l,t.indeterminate=!1,await c.nextTick(),D(t),h(t),o(i.tableData)};c.provide("tableContext",{selectAll:S,select:w}),c.onMounted(async()=>{await c.nextTick(),i.tableData=r(n.data),i.isFormat=!1,await f.Utils.wait(500),d.value&&u.value&&(i.isFixedHead=d.value.clientHeight>u.value.clientHeight)});const y=c.watchEffect(()=>{f.Utils.isEmpty(n.data)?i.tableData=[]:i.tableData=r(n.data)});return c.onBeforeUnmount(()=>{y()}),{state:i,tableData:b,isFixedHead:v,classNames:g}};exports.useTable=F;