vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
2 lines (1 loc) • 2.58 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("vue"),K=(i,r)=>{const d=c.computed(()=>i.label),u=c.computed(()=>i.value),o=c.computed(()=>i.disabled),n=c.ref([]),g=c.computed(()=>({"--transfer-theme":i.theme,"--transfer-height":`${i.height}px`,"--transfer-width":`${i.width}px`})),h=c.computed(()=>i.list.filter(e=>!n.value.some(t=>t[u.value]===e[u.value]))),s=c.ref([]),a=c.ref([]),m=e=>s.value.includes(e[u.value]),b=(e,t)=>{const l=e[u.value];t?!s.value.includes(l)&&s.value.push(l):s.value=s.value.filter(v=>v!==l)},L=c.computed(()=>{const e=h.value.filter(t=>!t[o.value]);return e.length>0&&s.value.length===e.length}),y=c.computed(()=>{const e=h.value.filter(t=>!t[o.value]);return s.value.length>0&&s.value.length<e.length}),R=e=>{s.value=e?h.value.filter(t=>!t[o.value]).map(t=>t[u.value]):[]},w=e=>a.value.includes(e[u.value]),V=(e,t)=>{const l=e[u.value];t?!a.value.includes(l)&&a.value.push(l):a.value=a.value.filter(v=>v!==l)},k=c.computed(()=>{const e=n.value.filter(t=>!t[o.value]);return e.length>0&&a.value.length===e.length}),A=c.computed(()=>{const e=n.value.filter(t=>!t[o.value]);return a.value.length>0&&a.value.length<e.length}),C=e=>{a.value=e?n.value.filter(t=>!t[o.value]).map(t=>t[u.value]):[]},f=()=>{const e=n.value.map(t=>t[u.value]);r("update:modelValue",e),r("change",e)},S=()=>{if(s.value.length===0)return;const e=[];for(let l=0;l<i.list.length;l++){const v=i.list[l];s.value.includes(v[u.value])&&!v[o.value]&&e.push(v)}const t=new Set(n.value.map(l=>l[u.value]));for(let l=0;l<e.length;l++){const v=e[l];t.has(v[u.value])||n.value.push(v)}s.value=[];for(let l=0;l<e.length;l++){const v=e[l][u.value];a.value=a.value.filter(x=>x!==v)}f()},E=()=>{if(a.value.length===0)return;const e=[];for(let t=0;t<n.value.length;t++){const l=n.value[t];a.value.includes(l[u.value])?l[o.value]&&e.push(l):e.push(l)}n.value=e,a.value=[],s.value=[],f()},T=c.watchEffect(()=>{Array.isArray(i.modelValue)?(n.value=i.list.filter(l=>i.modelValue.includes(l[u.value])),a.value=[]):(n.value=[],a.value=[]);const e=new Set(n.value.map(l=>l[u.value])),t=[];for(let l=0;l<i.list.length;l++){const v=i.list[l];e.has(v[u.value])&&t.push(v)}n.value=t,s.value=[]});return c.onUnmounted(()=>{T()}),{labelKey:d,valueKey:u,rightList:n,styles:g,leftList:h,leftCheckedValues:s,rightCheckedValues:a,isLeftChecked:m,onLeftCheck:b,isLeftAllSelected:L,isLeftIndeterminate:y,toggleLeftAll:R,isRightChecked:w,onRightCheck:V,isRightAllSelected:k,isRightIndeterminate:A,toggleRightAll:C,moveToRight:S,moveToLeft:E}};exports.useTransfer=K;