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.6 KiB

var E=Object.defineProperty;var k=Object.getOwnPropertySymbols;var I=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var G=(e,t,a)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,$=(e,t)=>{for(var a in t||(t={}))I.call(t,a)&&G(e,a,t[a]);if(k)for(var a of k(t))L.call(t,a)&&G(e,a,t[a]);return e};var w=(e,t,a)=>new Promise((u,i)=>{var f=n=>{try{l(a.next(n))}catch(o){i(o)}},d=n=>{try{l(a.throw(n))}catch(o){i(o)}},l=n=>n.done?u(n.value):Promise.resolve(n.value).then(f,d);l((a=a.apply(e,t)).next())});import{d as N,ay as c,r as g,dk as P,f as U,u as v,ar as q,G as V,O as z,e as H,aj as J,aq as K,aT as M,aU as b,o as p,a as h,w as y,g as A,F as S,bt as Q,h as T,t as O,aP as W}from"./index-f4658ae7.js";import{R as F}from"./index-3590612f.js";import{useRuleFormItem as X}from"./useFormItem-7226971e.js";import"./Checkbox-abf1420e.js";const Y=N({name:"ApiRadioGroup",components:{RadioGroup:F.Group,RadioButton:F.Button,Radio:F},props:{api:{type:Function,default:null},params:{type:[Object,String],default:()=>({})},value:{type:[String,Number,Boolean]},isBtn:{type:[Boolean],default:!1},numberToString:c.bool,resultField:c.string.def(""),labelField:c.string.def("label"),valueField:c.string.def("value"),immediate:c.bool.def(!0)},emits:["options-change","change"],setup(e,{emit:t}){const a=g([]),u=g(!1),i=g(!0),f=g([]),d=P(),{t:l}=H(),[n]=X(e),o=U(()=>{const{labelField:r,valueField:s,numberToString:D}=e;return v(a).reduce((_,m)=>{if(m){const C=m[s];_.push($({label:m[r],value:D?`${C}`:C},q(m,[r,s])))}return _},[])});V(()=>{e.immediate&&R()}),z(()=>e.params,()=>{!v(i)&&R()},{deep:!0});function R(){return w(this,null,function*(){const r=e.api;if(!(!r||!J(r))){a.value=[];try{u.value=!0;const s=yield r(e.params);if(Array.isArray(s)){a.value=s,B();return}e.resultField&&(a.value=K(s,e.resultField)||[]),B()}catch(s){}finally{u.value=!1}}})}function B(){t("options-change",v(o))}function j(r,...s){f.value=s}return{state:n,getOptions:o,attrs:d,loading:u,t:l,handleChange:j,props:e}}});function Z(e,t,a,u,i,f){const d=b("RadioButton"),l=b("Radio"),n=b("RadioGroup");return p(),h(n,W(e.attrs,{value:e.state,"onUpdate:value":t[0]||(t[0]=o=>e.state=o),"button-style":"solid",onChange:e.handleChange}),{default:y(()=>[(p(!0),A(S,null,Q(e.getOptions,o=>(p(),A(S,{key:`${o.value}`},[e.props.isBtn?(p(),h(d,{key:0,value:o.value,disabled:o.disabled},{default:y(()=>[T(O(o.label),1)]),_:2},1032,["value","disabled"])):(p(),h(l,{key:1,value:o.value,disabled:o.disabled},{default:y(()=>[T(O(o.label),1)]),_:2},1032,["value","disabled"]))],64))),128))]),_:1},16,["value","onChange"])}const ne=M(Y,[["render",Z]]);export{ne as default};