index-BFDfUdi9.js 3.7 KB

1
  1. import{a as I,R as q,c as E,aA as G,az as H,i as O,aR as U,a8 as J,s as K,j as M}from"./index-CVDyAB5E.js";import{d as Q,p as W,c as S,o as k,a as m,s as w,b as r,q as X,F as N,m as u,t as f,u as C,n as Y,y as Z,j,e as g,A as x}from"./vue-vendor-CBGUFTsF.js";const _=Q({name:"Switch",components:{IconLoading:q},props:{modelValue:{type:[String,Number,Boolean],default:void 0},defaultChecked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},type:{type:String,default:"circle"},size:{type:String},checkedValue:{type:[String,Number,Boolean],default:!0},uncheckedValue:{type:[String,Number,Boolean],default:!1},checkedColor:{type:String},uncheckedColor:{type:String},beforeChange:{type:Function},checkedText:{type:String},uncheckedText:{type:String}},emits:{"update:modelValue":e=>!0,change:(e,a)=>!0,focus:e=>!0,blur:e=>!0},setup(e,{emit:a}){const{disabled:h,size:B,modelValue:p}=Z(e),c=E("switch"),{mergedSize:y}=G(B),{mergedDisabled:t,mergedSize:z,eventHandlers:v}=H({disabled:h,size:y}),d=j(e.defaultChecked?e.checkedValue:e.uncheckedValue),s=g(()=>{var l;return((l=e.modelValue)!=null?l:d.value)===e.checkedValue}),b=j(!1),$=g(()=>b.value||e.loading),F=(l,n)=>{var o,i;d.value=l?e.checkedValue:e.uncheckedValue,a("update:modelValue",d.value),a("change",d.value,n),(i=(o=v.value)==null?void 0:o.onChange)==null||i.call(o,n)},D=async l=>{if($.value||t.value)return;const n=!s.value,o=n?e.checkedValue:e.uncheckedValue,i=e.beforeChange;if(J(i)){b.value=!0;try{const T=await i(o);(T??!0)&&F(n,l)}finally{b.value=!1}}else F(n,l)},L=l=>{var n,o;a("focus",l),(o=(n=v.value)==null?void 0:n.onFocus)==null||o.call(n,l)},P=l=>{var n,o;a("blur",l),(o=(n=v.value)==null?void 0:n.onBlur)==null||o.call(n,l)};x(p,l=>{(O(l)||U(l))&&(d.value=e.uncheckedValue)});const R=g(()=>[c,`${c}-type-${e.type}`,{[`${c}-small`]:z.value==="small"||z.value==="mini",[`${c}-checked`]:s.value,[`${c}-disabled`]:t.value,[`${c}-loading`]:$.value,[`${c}-custom-color`]:e.type==="line"&&(e.checkedColor||e.uncheckedColor)}]),A=g(()=>{if(s.value&&e.checkedColor)return e.type==="line"?{"--custom-color":e.checkedColor}:{backgroundColor:e.checkedColor};if(!s.value&&e.uncheckedColor)return e.type==="line"?{"--custom-color":e.uncheckedColor}:{backgroundColor:e.uncheckedColor}});return{prefixCls:c,cls:R,mergedDisabled:t,buttonStyle:A,computedCheck:s,computedLoading:$,handleClick:D,handleFocus:L,handleBlur:P}}}),ee=["aria-checked","disabled"];function le(e,a,h,B,p,c){const y=W("icon-loading");return k(),S("button",{type:"button",role:"switch","aria-checked":e.computedCheck,class:r(e.cls),style:Y(e.buttonStyle),disabled:e.mergedDisabled,onClick:a[0]||(a[0]=(...t)=>e.handleClick&&e.handleClick(...t)),onFocus:a[1]||(a[1]=(...t)=>e.handleFocus&&e.handleFocus(...t)),onBlur:a[2]||(a[2]=(...t)=>e.handleBlur&&e.handleBlur(...t))},[m("span",{class:r(`${e.prefixCls}-handle`)},[m("span",{class:r(`${e.prefixCls}-handle-icon`)},[e.computedLoading?(k(),X(y,{key:0})):(k(),S(N,{key:1},[e.computedCheck?u(e.$slots,"checked-icon",{key:0}):u(e.$slots,"unchecked-icon",{key:1})],2112))],2)],2),w(" prettier-ignore "),e.type!=="line"&&e.size!=="small"&&(e.$slots.checked||e.checkedText||e.$slots.unchecked||e.uncheckedText)?(k(),S(N,{key:0},[m("span",{class:r(`${e.prefixCls}-text-holder`)},[e.computedCheck?u(e.$slots,"checked",{key:0},()=>[f(C(e.checkedText),1)]):u(e.$slots,"unchecked",{key:1},()=>[f(C(e.uncheckedText),1)])],2),m("span",{class:r(`${e.prefixCls}-text`)},[e.computedCheck?u(e.$slots,"checked",{key:0},()=>[f(C(e.checkedText),1)]):u(e.$slots,"unchecked",{key:1},()=>[f(C(e.uncheckedText),1)])],2)],64)):w("v-if",!0)],46,ee)}var V=I(_,[["render",le]]);const oe=Object.assign(V,{install:(e,a)=>{K(e,a);const h=M(a);e.component(h+V.name,V)}});export{oe as S};