vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 4.03 kB
JavaScript
"use strict";const e=require("vue");require("../form/index.cjs");require("./index.cjs");const u=require("@vexip-ui/config"),i=require("@vexip-ui/utils"),U=require("./props.cjs"),$=require("./symbol.cjs"),J=require("../form/helper.cjs"),h=require("./checkbox.vue2.cjs"),K=["id","aria-labelledby"],Q=e.defineComponent({name:"CheckboxGroup",__name:"checkbox-group",props:U.checkboxGroupProps,emits:["update:value"],setup(y,{expose:_,emit:x}){const{idFor:b,labelId:k,state:S,disabled:B,loading:E,size:q,validateField:z,getFieldValue:R,setFieldValue:L}=J.useFieldStore(C),w=y,o=u.useProps("checkboxGroup",w,{size:u.createSizeProp(q),state:u.createStateProp(S),locale:null,value:{default:()=>R(),static:!0},vertical:!1,disabled:()=>B.value,border:!1,options:{default:()=>[],static:!0},loading:()=>E.value,control:null,loadingLock:!1,color:null,stateColor:!1}),F=x,r=u.useNameHelper("checkbox-group"),D=u.useLocale("checkbox",e.toRef(o,"locale")),a=new Map,d=new Set,p=new Set,c=e.ref(o.value||[]),N=e.computed(()=>o.loading&&o.loadingLock),T=e.computed(()=>[r.b(),r.ns("checkbox-vars"),{[r.bm("inherit")]:o.inherit,[r.bm("vertical")]:o.vertical,[r.bm("disabled")]:o.disabled,[r.bm("readonly")]:N.value,[r.bm("loading")]:o.loading,[r.bm(o.size)]:o.size!=="default",[r.bm("border")]:o.border,[r.bm(o.state)]:o.state!=="default"}]),V=e.computed(()=>typeof o.control=="string"?o.control:D.value.all),A=e.computed(()=>{if(!o.color)return null;const t=i.parseColorToRgba(o.color);return{base:t.toString(),opacity6:i.adjustAlpha(t,.4).toString()}}),g=i.debounceMinor(()=>{c.value=[],a.forEach((t,l)=>{t&&c.value.push(l)}),j(c.value)}),f=i.debounceMinor(()=>{const t=c.value.length,l=t===a.size,n=t>0&&!l;p.forEach(s=>{s.checked=l,s.partial=n})});e.provide($.GROUP_STATE,e.reactive({currentValues:c,size:e.toRef(o,"size"),state:e.toRef(o,"state"),disabled:e.toRef(o,"disabled"),loading:e.toRef(o,"loading"),loadingLock:e.toRef(o,"loadingLock"),colorMap:A,stateColor:e.toRef(o,"stateColor"),increaseItem:M,decreaseItem:P,increaseControl:m,decreaseControl:v,handleControlChange:I,setItemChecked:G,replaceValue:O})),e.watch(()=>o.value,t=>{const l=new Set(t),n=Array.from(a.keys());c.value=[],n.forEach(s=>{const H=l.has(s);a.set(s,l.has(s)),H&&c.value.push(s)})}),e.watch(c,()=>{f()});function M(t,l,n){a.set(t,l),d.add(n)}function P(t,l){a.delete(t),d.delete(l)}function m(t){p.add(t),f()}function v(t){p.delete(t)}function G(t,l){!i.isDefined(t)||!a.has(t)||(a.set(t,l),g(),f())}function I(){const t=Array.from(a.keys()),l=c.value.length!==t.length;t.forEach(n=>{a.set(n,l)}),g(),f()}function j(t){F("update:value",t),L(t),u.emitEvent(o.onChange,t),z()}function O(t,l){i.isDefined(t)&&i.isDefined(l)&&t!==l&&a.has(t)&&(a.set(l,a.get(t)),a.delete(t))}function C(t){var n;const l=(n=Array.from(d)[0])==null?void 0:n.value;i.isClient&&l&&document.activeElement!==l&&l.focus(t)}return _({idFor:b,labelId:k,increaseControl:m,decreaseControl:v,focus:C,blur:()=>{var t;for(const l of d)(t=l.value)==null||t.blur()}}),(t,l)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(b),class:e.normalizeClass(T.value),role:"group","aria-labelledby":e.unref(k)},[e.renderSlot(t.$slots,"default",{},()=>[e.unref(o).control?(e.openBlock(),e.createBlock(e.unref(h),{key:0,inherit:"",control:""},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.value),1)]),_:1})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).options,(n,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s},[e.unref(i.isObject)(n)?(e.openBlock(),e.createBlock(e.unref(h),{key:0,inherit:"",value:n.value,control:n.control,disabled:n.disabled},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.label||n.value),1)]),_:2},1032,["value","control","disabled"])):(e.openBlock(),e.createBlock(e.unref(h),{key:1,inherit:"",value:n},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n),1)]),_:2},1032,["value"]))],64))),128))])],10,K))}});module.exports=Q;
//# sourceMappingURL=checkbox-group.vue2.cjs.map