ll-package
Version:
2 lines (1 loc) • 1.76 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("vue"),S=require("../../vc-select/hooks/useBaseProps.js"),u=require("../../_util/KeyCode.js"),K=require("../hooks/useSearchOptions.js"),q=(E,x,s,p,I,A)=>{const d=S.default(),O=r.computed(()=>d.direction==="rtl"),[o,f,i]=[r.ref([]),r.ref(),r.ref([])];r.watchEffect(()=>{let t=-1,l=x.value;const e=[],n=[],c=p.value.length;for(let a=0;a<c&&l;a+=1){const C=l.findIndex(k=>k[s.value.value]===p.value[a]);if(C===-1)break;t=C,e.push(t),n.push(p.value[a]),l=l[t][s.value.children]}let v=x.value;for(let a=0;a<e.length-1;a+=1)v=v[e[a]][s.value.children];[o.value,f.value,i.value]=[n,t,v]});const h=t=>{I(t)},P=t=>{const l=i.value.length;let e=f.value;e===-1&&t<0&&(e=l);for(let n=0;n<l;n+=1){e=(e+t+l)%l;const c=i.value[e];if(c&&!c.disabled){const v=c[s.value.value],a=o.value.slice(0,-1).concat(v);h(a);return}}},g=()=>{if(o.value.length>1){const t=o.value.slice(0,-1);h(t)}else d.toggleOpen(!1)},b=()=>{var t;const e=(((t=i.value[f.value])===null||t===void 0?void 0:t[s.value.children])||[]).find(n=>!n.disabled);if(e){const n=[...o.value,e[s.value.value]];h(n)}};E.expose({onKeydown:t=>{const{which:l}=t;switch(l){case u.default.UP:case u.default.DOWN:{let e=0;l===u.default.UP?e=-1:l===u.default.DOWN&&(e=1),e!==0&&P(e);break}case u.default.LEFT:{O.value?b():g();break}case u.default.RIGHT:{O.value?g():b();break}case u.default.BACKSPACE:{d.searchValue||g();break}case u.default.ENTER:{if(o.value.length){const e=i.value[f.value],n=(e==null?void 0:e[K.SEARCH_MARK])||[];n.length?A(n.map(c=>c[s.value.value]),n[n.length-1]):A(o.value,e)}break}case u.default.ESC:d.toggleOpen(!1),open&&t.stopPropagation()}},onKeyup:()=>{}})};exports.default=q;
;