Files
qhmes/web-dist/js/AppSearch-CMiEm7dS.js
2026-06-16 18:19:57 +08:00

2 lines
5.5 KiB
Java

var L=(o,l,r)=>new Promise((t,h)=>{var p=f=>{try{a(r.next(f))}catch($){h($)}},_=f=>{try{a(r.throw(f))}catch($){h($)}},a=f=>f.done?t(f.value):Promise.resolve(f.value).then(p,_);a((r=r.apply(o,l)).next())});import{e as B,C,z as x,J as u,f as d,u as e,Q as v,G as S,a6 as Y,r as A,n as K,h as Z,y as ee,a5 as ne,A as J,H as te,R as se,c as U,O as V,P as j,F as ae,D as oe,a3 as le}from"./vue-vendor-DNhG1Cve.js";import{x as G,bo as P,ad as H,au as Q,aV as re,d5 as ce,aQ as ie,gN as ue,hk as D,J as pe,hl as de,f6 as fe,aG as he,gJ as W,T as me}from"./index-X7Y8jykP.js";import{C as ve}from"./clickOutside-DHfwTU6R.js";import{useRefs as _e}from"./useRefs-BCIW6H4H.js";import{useScrollTo as ge}from"./useScrollTo-0FPEw5-K.js";import{useAppInject as $e}from"./useAppInject-DPZGPcR3.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";const N=B({__name:"AppSearchKeyItem",props:{icon:String},setup(o){return(l,r)=>(x(),C("span",{class:u(l.$attrs.class)},[d(e(G),{icon:o.icon},null,8,["icon"])],2))}}),we=B({__name:"AppSearchFooter",setup(o){const{prefixCls:l}=P("app-search-footer"),{t:r}=H();return(t,h)=>(x(),C("div",{class:u(`${e(l)}`)},[d(N,{class:u(`${e(l)}-item`),icon:"ant-design:enter-outlined"},null,8,["class"]),v("span",null,S(e(r)("component.app.toSearch")),1),d(N,{class:u(`${e(l)}-item`),icon:"ion:arrow-up-outline"},null,8,["class"]),d(N,{class:u(`${e(l)}-item`),icon:"ion:arrow-down-outline"},null,8,["class"]),v("span",null,S(e(r)("component.app.toNavigate")),1),d(N,{class:u(`${e(l)}-item`),icon:"mdi:keyboard-esc"},null,8,["class"]),v("span",null,S(e(r)("common.closeText")),1)],2))}}),xe=Q(we,[["__scopeId","data-v-7e40a87e"]]);function ye(o){return["$","(",")","*","+",".","[","]","?","\\","^","{","}","|"].includes(o)?`\\${o}`:o}function ke(o){const r=["",...[...o].map(t=>ye(t)),""].join(".*");return new RegExp(r,"i")}function Ce(o,l,r){const t=A([]),h=A(""),p=A(-1);let _=[];const{t:a}=H(),f=re(),$=pe(z,200);Y(()=>L(null,null,function*(){const s=yield ce();_=ie(s),ue(_,c=>{c.name=a(c.name)})}));function z(s){s==null||s.stopPropagation();const c=s.target.value;if(h.value=c.trim(),!c){t.value=[];return}const i=ke(e(h)),n=fe(_,m=>Array.isArray(m.children)?!1:i.test(m.name)&&!m.hideMenu);t.value=E(n,i),p.value=0}function E(s,c,i){const n=[];return s.forEach(m=>{const{name:g,path:w,icon:T,children:y,hideMenu:q,meta:k,internalOrExternal:X}=m;!q&&c.test(g)&&(!(y!=null&&y.length)||k!=null&&k.hideChildrenInMenu)&&n.push({name:i!=null&&i.name?`${i.name} > ${g}`:g,path:w,icon:T,internalOrExternal:X}),!(k!=null&&k.hideChildrenInMenu)&&Array.isArray(y)&&y.length&&n.push(...E(y,c,m))}),n}function M(s){const c=s.target.dataset.index;p.value=Number(c)}function F(){t.value.length&&(p.value--,p.value<0&&(p.value=t.value.length-1),b())}function O(){t.value.length&&(p.value++,p.value>t.value.length-1&&(p.value=0),b())}function b(){const s=e(o);if(!s||!Array.isArray(s)||s.length===0||!e(l))return;const c=e(p),i=s[c];if(!i)return;const n=e(l);if(!n)return;const m=i.offsetTop+i.offsetHeight,g=n.offsetHeight,{start:w}=ge({el:n,duration:100,to:m-g});w()}function I(){return L(this,null,function*(){if(!t.value.length)return;const s=e(t),c=e(p);if(s.length===0||c<0)return;const i=s[c];if(R(),yield K(),i.internalOrExternal){const n=i.path.replace(de,"#");window.open(n,"_blank")}else f(i.path)})}function R(){t.value=[],r("close")}return D("Enter",I),D("ArrowUp",F),D("ArrowDown",O),D("Escape",R),{handleSearch:$,searchResult:t,keyword:h,activeIndex:p,handleMouseenter:M,handleEnter:I}}const Se=["data-index"],Ae=B({__name:"AppSearchModal",props:{visible:{type:Boolean}},emits:["close"],setup(o,{emit:l}){const r=o,t=l,h=A(null),p=A(null),{t:_}=H(),{prefixCls:a}=P("app-search-modal"),[f,$]=_e(),{getIsMobile:z}=$e(),{handleSearch:E,searchResult:M,keyword:F,activeIndex:O,handleEnter:b,handleMouseenter:I}=Ce(f,h,t),R=U(()=>!F||e(M).length===0),s=U(()=>[a,{[`${a}--mobile`]:e(z)}]);Z(()=>r.visible,i=>{i&&K(()=>{var n;(n=e(p))==null||n.focus()})});function c(){M.value=[],t("close")}return(i,n)=>{const m=he;return x(),ee(le,{to:"body"},[d(ne,{name:"zoom-fade",mode:"out-in"},{default:J(()=>[o.visible?(x(),C("div",{key:0,class:u(s.value),onClick:n[2]||(n[2]=se(()=>{},["stop"]))},[V((x(),C("div",{class:u(`${e(a)}-content`)},[v("div",{class:u(`${e(a)}-input__wrapper`)},[d(m,{class:u(`${e(a)}-input`),placeholder:e(_)("common.searchText"),ref_key:"inputRef",ref:p,"allow-clear":"",onChange:e(E)},{prefix:J(()=>[d(e(W))]),_:1},8,["class","placeholder","onChange"]),v("span",{class:u(`${e(a)}-cancel`),onClick:c},S(e(_)("common.cancelText")),3)],2),V(v("div",{class:u(`${e(a)}-not-data`)},S(e(_)("component.app.searchNotData")),3),[[j,R.value]]),V(v("ul",{class:u(`${e(a)}-list`),ref_key:"scrollWrap",ref:h},[(x(!0),C(ae,null,oe(e(M),(g,w)=>(x(),C("li",{ref_for:!0,ref:e($)(w),key:g.path,"data-index":w,onMouseenter:n[0]||(n[0]=(...T)=>e(I)&&e(I)(...T)),onClick:n[1]||(n[1]=(...T)=>e(b)&&e(b)(...T)),class:u([`${e(a)}-list__item`,{[`${e(a)}-list__item--active`]:e(O)===w}])},[v("div",{class:u(`${e(a)}-list__item-icon`)},[d(e(G),{icon:g.icon||"mdi:form-select",size:20},null,8,["icon"])],2),v("div",{class:u(`${e(a)}-list__item-text`)},S(g.name),3),v("div",{class:u(`${e(a)}-list__item-enter`)},[d(e(G),{icon:"ant-design:enter-outlined",size:20})],2)],42,Se))),128))],2),[[j,!R.value]]),d(xe)],2)),[[e(ve),c]])],2)):te("",!0)]),_:1})])}}}),Me=Q(Ae,[["__scopeId","data-v-5bd87c54"]]),He=B({name:"AppSearch",setup(){const o=A(!1),{t:l}=H();function r(t){o.value=t}return()=>d("div",{class:"p-1",onClick:r.bind(null,!0)},[d(me,null,{title:()=>l("common.searchText"),default:()=>d(W,null,null)}),d(Me,{onClose:r.bind(null,!1),visible:e(o)},null)])}});export{He as default};