You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
2.8 KiB

var N=Object.defineProperty,T=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var C=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var O=(e,t,a)=>t in e?N(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,w=(e,t)=>{for(var a in t||(t={}))P.call(t,a)&&O(e,a,t[a]);if(C)for(var a of C(t))B.call(t,a)&&O(e,a,t[a]);return e},$=(e,t)=>T(e,D(t));var v=(e,t,a)=>new Promise((u,i)=>{var c=n=>{try{r(a.next(n))}catch(o){i(o)}},d=n=>{try{r(a.throw(n))}catch(o){i(o)}},r=n=>n.done?u(n.value):Promise.resolve(n.value).then(c,d);r((a=a.apply(e,t)).next())});import{d as I,bf as q,dh as R,ay as f,r as p,dk as U,f as W,u as g,ar as z,G as E,O as G,e as _,aj as H,aq as J,aT as K,aU as A,o as M,a as Q,bq as X,bt as Y,w as b,aV as Z,aW as x,bW as ee,b as k,j as ae,h as te,t as ne,aP as se}from"./index-f4658ae7.js";import{useRuleFormItem as oe}from"./useFormItem-7226971e.js";const ie=I({name:"ApiSelect",components:{Select:q,LoadingOutlined:R},inheritAttrs:!1,props:{value:[Array,Object,String,Number],numberToString:f.bool,api:{type:Function,default:null},params:{type:Object,default:()=>({})},resultField:f.string.def(""),labelField:f.string.def("label"),valueField:f.string.def("value"),immediate:f.bool.def(!0)},emits:["options-change","change"],setup(e,{emit:t}){const a=p([]),u=p(!1),i=p(!0),c=p([]),d=U(),{t:r}=_(),[n]=oe(e,"value","change",c),o=W(()=>{const{labelField:l,valueField:s,numberToString:L}=e;return g(a).reduce((F,m)=>{if(m){const S=m[s];F.push($(w({},z(m,[l,s])),{label:m[l],value:L?`${S}`:S}))}return F},[])});E(()=>{e.immediate&&h()}),G(()=>e.params,()=>{!g(i)&&h()},{deep:!0});function h(){return v(this,null,function*(){const l=e.api;if(!(!l||!H(l))){a.value=[];try{u.value=!0;const s=yield l(e.params);if(Array.isArray(s)){a.value=s,y();return}e.resultField&&(a.value=J(s,e.resultField)||[]),y()}catch(s){}finally{u.value=!1}}})}function V(){return v(this,null,function*(){!e.immediate&&g(i)&&(yield h(),i.value=!1)})}function y(){t("options-change",g(o))}function j(l,...s){c.value=s}return{state:n,attrs:d,getOptions:o,loading:u,t:r,handleFetch:V,handleChange:j}}});function re(e,t,a,u,i,c){const d=A("LoadingOutlined"),r=A("Select");return M(),Q(r,se({onDropdownVisibleChange:e.handleFetch},e.$attrs,{onChange:e.handleChange,options:e.getOptions,value:e.state,"onUpdate:value":t[0]||(t[0]=n=>e.state=n)}),X({_:2},[Y(Object.keys(e.$slots),n=>({name:n,fn:b(o=>[Z(e.$slots,n,x(ee(o||{})))])})),e.loading?{name:"suffixIcon",fn:b(()=>[k(d,{spin:""})]),key:"0"}:void 0,e.loading?{name:"notFoundContent",fn:b(()=>[ae("span",null,[k(d,{spin:"",class:"mr-1"}),te(" "+ne(e.t("component.form.apiSelectNotFound")),1)])]),key:"1"}:void 0]),1040,["onDropdownVisibleChange","onChange","options","value"])}const ce=K(ie,[["render",re]]);export{ce as default};