UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 4.37 kB
"use strict";const e=require("vue");require("../form/index.cjs");const i=require("@vexip-ui/config"),u=require("@vexip-ui/utils"),H=require("./props.cjs"),O=require("./symbol.cjs"),J=require("../form/helper.cjs"),K=["id","aria-disabled","aria-labelledby"],Q=["checked","disabled","tabindex","name"],W=e.defineComponent({name:"Checkbox",__name:"checkbox",props:H.checkboxProps,emits:["update:checked"],setup(g,{expose:V,emit:E}){const{idFor:h,labelId:k,state:F,disabled:I,loading:q,size:w,validateField:L,getFieldValue:N,setFieldValue:P}=J.useFieldStore(()=>{var a;return(a=s.value)==null?void 0:a.focus()}),_=g,t=i.useProps("checkbox",_,{size:i.createSizeProp(w),state:i.createStateProp(F),checked:{default:()=>N(),static:!0},label:null,value:{default:null,static:!0},labelClass:null,disabled:()=>I.value,border:!1,control:!1,partial:!1,tabIndex:0,loading:()=>q.value,loadingLock:!1,name:{default:"",static:!0},color:null,stateColor:!1}),B=E,M=e.useSlots(),l=e.inject(O.GROUP_STATE,null),n=i.useNameHelper("checkbox"),c=e.ref(t.checked??!1),b=e.ref(t.partial),s=e.ref(),m=e.reactive({checked:c,partial:b}),C=e.computed(()=>(l==null?void 0:l.size)||t.size),y=e.computed(()=>(l==null?void 0:l.state)||t.state),d=e.computed(()=>(l==null?void 0:l.disabled)||t.disabled),f=e.computed(()=>(l==null?void 0:l.loading)||t.loading),T=e.computed(()=>(l==null?void 0:l.loadingLock)||t.loadingLock),D=e.computed(()=>(l==null?void 0:l.stateColor)||t.stateColor),v=e.computed(()=>f.value&&T.value),j=e.computed(()=>[n.b(),n.bs("vars"),{[n.bm("inherit")]:t.inherit,[n.bm("checked")]:c.value,[n.bm("disabled")]:d.value,[n.bm("readonly")]:v.value,[n.bm("loading")]:f.value,[n.bm(C.value)]:C.value!=="default",[n.bm("border")]:t.border,[n.bm("partial")]:t.control&&b.value,[n.bm(y.value)]:y.value!=="default"}]),x=e.computed(()=>{if(!t.color)return l==null?void 0:l.colorMap;const a=u.parseColorToRgba(t.color);return{base:a.toString(),opacity6:u.adjustAlpha(a,.4).toString()}}),A=e.computed(()=>{if(!x.value)return{};const{base:a,opacity6:o}=x.value;return n.cvm({"label-color-checked":a,"b-color":D.value?a:void 0,"b-color-hover":a,"b-color-checked":a,"signal-bg-color-checked":a,"s-color-focus":o})}),R=e.computed(()=>u.isDefined(t.label)&&t.label!==""),r=e.computed(()=>t.value??t.label);if(e.watch(()=>t.checked,a=>{p(a)}),e.watch(()=>t.partial,a=>{b.value=a}),l){let a=!1;e.watch(r,(o,z)=>{u.isFunction(l.replaceValue)&&l.replaceValue(z,o)}),e.watch(()=>t.control,o=>{o?(a&&(l.decreaseItem(r.value,s),a=!1),l.increaseControl(m)):l.decreaseControl(m)},{immediate:!0}),e.watch(()=>l.currentValues,o=>{t.control||p(o.includes(r.value))},{immediate:!0}),e.onMounted(()=>{t.control||(l.increaseItem(r.value,c.value,s),a=!0)}),e.onBeforeUnmount(()=>{t.control?l.decreaseControl(m):l.decreaseItem(r.value,s)})}V({idFor:h,labelId:k,currentChecked:c,input:s,focus:a=>{var o;return(o=s.value)==null?void 0:o.focus(a)},blur:()=>{var a;return(a=s.value)==null?void 0:a.blur()}});function U(){const a=c.value;B("update:checked",a),P(a),i.emitEvent(t.onChange,a)}function p(a){t.control&&u.isFunction(l==null?void 0:l.handleControlChange)?l.handleControlChange():c.value!==a&&(c.value=a,U())}function $(a){d.value||v.value||(p(a),!t.control&&l&&u.isFunction(l.setItemChecked)&&l.setItemChecked(r.value,a),l||L())}function G(a){i.emitEvent(t.onClick,a)}return(a,o)=>(e.openBlock(),e.createElementBlock("label",{id:e.unref(h),class:e.normalizeClass(j.value),style:e.normalizeStyle(A.value),"aria-disabled":d.value,"aria-labelledby":e.unref(k),onClick:G},[e.createElementVNode("input",{ref_key:"input",ref:s,type:"checkbox",class:e.normalizeClass(e.unref(n).be("input")),checked:c.value,disabled:d.value||v.value,tabindex:e.unref(t).tabIndex,name:e.unref(t).name,onSubmit:o[0]||(o[0]=e.withModifiers(()=>{},["prevent"])),onChange:o[1]||(o[1]=z=>$(!c.value)),onClick:o[2]||(o[2]=e.withModifiers(()=>{},["stop"]))},null,42,Q),e.createElementVNode("span",{class:e.normalizeClass([e.unref(n).be("signal"),f.value&&e.unref(n).bem("signal","active")])},null,2),R.value||M.default?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(n).be("label"),e.unref(t).labelClass])},[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(e.unref(t).label),1)])],2)):e.createCommentVNode("",!0)],14,K))}});module.exports=W; //# sourceMappingURL=checkbox.vue2.cjs.map