@meleon/uni-ui
Version:
A uniapp components library written in vue3 and typescript
1 lines • 785 B
JavaScript
import{ref,computed,toRefs,watchEffect}from"vue";import{getCheckStateWithIntialKeys}from"../utils";export default function useCheckedState(e){const{defaultCheckedKeys:t,checkedKeys:a,indeterminateKeys:u,key2TreeNode:l}=toRefs(e),v=e=>getCheckStateWithIntialKeys({initialCheckedKeys:e,key2TreeNode:l.value}),c=ref(!1),d=ref([]),i=ref([]),o=e=>{[d.value,i.value]=v(e)};o((null==a?void 0:a.value)||(null==t?void 0:t.value)||[]);const f=ref([]),r=ref([]);return watchEffect((()=>{(null==a?void 0:a.value)?[f.value,r.value]=v(d.value):c.value&&(f.value=[],r.value=[],d.value=[],i.value=[]),c.value||(c.value=!0)})),{checkedKeys:computed((()=>f.value||d.value)),indeterminateKeys:computed((()=>r.value||i.value)),setCheckedState:(e,t,a=!1)=>(a?o(e):(d.value=e,i.value=t),[d.value,i.value])}}