2023-09-06 18:53:48 +08:00

2 lines
4.6 KiB
JavaScript

import{E as V,a as L,s as U}from"./index-a997ab1f.js";import{_ as p}from"./index-5ee2b751.js";import{b as B,a4 as j,c as y,E as S,d as M,P as F,w,W as H,I as R,r as P,R as g,o as q,U as N,_ as z}from"./base-d77b0726.js";import{p as K}from"./index-52f984e1.js";import{U as O}from"./event-e06a23af.js";import{i as W}from"./isEqual-030b54ca.js";const $=(e,{attrs:c},{tree:i,key:d})=>{const r=B("tree-select"),s={...K(j(e),Object.keys(V.props)),...c,valueKey:d,popperClass:y(()=>{const a=[r.e("popper")];return e.popperClass&&a.push(e.popperClass),a.join(" ")}),filterMethod:(a="")=>{e.filterMethod&&e.filterMethod(a),S(()=>{var f;(f=i.value)==null||f.filter(a)})},onVisibleChange:a=>{var f;(f=c.onVisibleChange)==null||f.call(c,a),e.filterable&&a&&s.filterMethod()}};return s},D=M({extends:L,setup(e,c){const i=L.setup(e,c);delete i.selectOptionClick;const d=F().proxy;return S(()=>{i.select.cachedOptions.get(d.value)||i.select.onOptionCreate(d)}),i},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function A(e){return e||e===0}function T(e){return Array.isArray(e)&&e.length}function x(e){return Array.isArray(e)?e:A(e)?[e]:[]}function b(e,c,i,d,r){for(let s=0;s<e.length;s++){const a=e[s];if(c(a,s,e,r))return d?d(a,s,e,r):a;{const f=i(a);if(T(f)){const n=b(f,c,i,d,a);if(n)return n}}}}function I(e,c,i,d){for(let r=0;r<e.length;r++){const s=e[r];c(s,r,e,d);const a=i(s);T(a)&&I(a,c,i,s)}}const G=(e,{attrs:c,slots:i,emit:d},{select:r,tree:s,key:a})=>{w(()=>e.modelValue,()=>{e.showCheckbox&&S(()=>{const t=s.value;t&&!W(t.getCheckedKeys(),x(e.modelValue))&&t.setCheckedKeys(x(e.modelValue))})},{immediate:!0,deep:!0});const f=y(()=>({value:a.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props})),n=(t,l)=>{var o;const u=f.value[t];return H(u)?u(l,(o=s.value)==null?void 0:o.getNode(n("value",l))):l[u]},m=x(e.modelValue).map(t=>b(e.data||[],l=>n("value",l)===t,l=>n("children",l),(l,o,u,h)=>h&&n("value",h))).filter(t=>A(t)),k=y(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const t=[];return I(e.data.concat(e.cacheData),l=>{const o=n("value",l);t.push({value:o,currentLabel:n("label",l),isDisabled:n("disabled",l)})},l=>n("children",l)),t});return{...K(j(e),Object.keys(p.props)),...c,nodeKey:a,expandOnClickNode:y(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:y(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(m):m),renderContent:(t,{node:l,data:o,store:u})=>t(D,{value:n("value",o),label:n("label",o),disabled:n("disabled",o)},e.renderContent?()=>e.renderContent(t,{node:l,data:o,store:u}):i.default?()=>i.default({node:l,data:o,store:u}):void 0),filterNodeMethod:(t,l,o)=>{var u;return e.filterNodeMethod?e.filterNodeMethod(t,l,o):t?(u=n("label",l))==null?void 0:u.includes(t):!0},onNodeClick:(t,l,o)=>{var u,h,C;if((u=c.onNodeClick)==null||u.call(c,t,l,o),!(e.showCheckbox&&e.checkOnClickNode))if(!e.showCheckbox&&(e.checkStrictly||l.isLeaf)){if(!n("disabled",t)){const _=(h=r.value)==null?void 0:h.options.get(n("value",t));(C=r.value)==null||C.handleOptionSelect(_,!0)}}else e.expandOnClickNode&&o.proxy.handleExpandIconClick()},onCheck:(t,l)=>{var o;(o=c.onCheck)==null||o.call(c,t,l);const u=n("value",t);if(e.checkStrictly)d(O,e.multiple?l.checkedKeys:l.checkedKeys.includes(u)?u:void 0);else if(e.multiple)d(O,s.value.getCheckedKeys(!0));else{const h=b([t],v=>!T(n("children",v))&&!n("disabled",v),v=>n("children",v)),C=h?n("value",h):void 0,_=A(e.modelValue)&&!!b([t],v=>n("value",v)===e.modelValue,v=>n("children",v));d(O,C===e.modelValue||_?void 0:C)}},cacheOptions:k}};var J=M({props:{data:{type:Array,default:()=>[]}},setup(e){const c=R(U);return w(()=>e.data,()=>{e.data.forEach(i=>{c.cachedOptions.has(i.value)||c.cachedOptions.set(i.value,i)}),c.setSelected()},{immediate:!0,deep:!0}),()=>{}}});const Q=M({name:"ElTreeSelect",inheritAttrs:!1,props:{...V.props,...p.props,cacheData:{type:Array,default:()=>[]}},setup(e,c){const{slots:i,expose:d}=c,r=P(),s=P(),a=y(()=>e.nodeKey||e.valueKey||"value"),f=$(e,c,{select:r,tree:s,key:a}),{cacheOptions:n,...m}=G(e,c,{select:r,tree:s,key:a}),k=g({});return d(k),q(()=>{Object.assign(k,{...K(s.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...K(r.value,["focus","blur"])})}),()=>N(V,g({...f,ref:t=>r.value=t}),{...i,default:()=>[N(J,{data:n.value}),N(p,g({...m,ref:t=>s.value=t}))]})}});var E=z(Q,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tree-select/src/tree-select.vue"]]);E.install=e=>{e.component(E.name,E)};const X=E,ce=X;export{ce as E};