remote-select.a352df28.js 1.1 KB

1
  1. import{q as h,bc as y,B as c,t as i,bl as S,a_ as P,bm as V,v as C}from"./index.2530a63f.js";import{u as R}from"./use-response-handle.f4613608.js";const q={api:{type:Function,required:!0},value:{type:String},requestProp:{type:String},responseLabelProp:{type:String},responseValProp:{type:String},placeholder:{type:String}};function j(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!P(e)}const _=h({name:"RemoteSelect",props:q,emits:["listChange","itemChange"],setup(e,{emit:n}){const s=y(e,"value"),d=R(),l=c([]),o=c(!1);async function m(a){if(!a)return;const{responseLabelProp:t,responseValProp:r,requestProp:u,api:f}=e;o.value=!0;const{code:g,data:v,message:b}=await f({[u||t]:a});d({code:g,message:b,handler:()=>{l.value=v.list.map(p=>({label:p[t],value:p[r]})),n("listChange",C(l))}}),o.value=!1}return()=>{let a;return i(V,{modelValue:s.value,"onUpdate:modelValue":t=>s.value=t,placeholder:e.placeholder,remoteMethod:m,loading:o.value,reserveKeyword:!0,filterable:!0,clearable:!0,remote:!0,onChange:()=>n("itemChange")},j(a=l.value.map((t,r)=>i(S,{label:t.label,key:r,value:t.value},null)))?a:{default:()=>[a]})}}});export{_ as R};