vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 2.95 kB
JavaScript
"use strict";const e=require("vue");require("./index.cjs");require("../form/index.cjs");const n=require("@vexip-ui/config"),u=require("@vexip-ui/utils"),x=require("./props.cjs"),p=require("./symbol.cjs"),G=require("../form/helper.cjs"),f=require("./radio.vue2.cjs"),L=["id","aria-orientation","aria-labelledby"],w=e.defineComponent({name:"RadioGroup",__name:"radio-group",props:x.radioGroupProps,emits:["update:value"],setup(b,{expose:g,emit:v}){const{idFor:d,labelId:m,state:h,disabled:k,loading:_,size:y,validateField:S,getFieldValue:B,setFieldValue:R}=G.useFieldStore(c),q=b,t=n.useProps("radioGroup",q,{size:n.createSizeProp(y),state:n.createStateProp(h),value:{default:()=>B(),static:!0},vertical:!1,disabled:()=>k.value,options:{default:()=>[],static:!0},loading:()=>_.value,loadingIcon:n.createIconProp(),loadingLock:!1,loadingEffect:null,shape:{default:"default",validator:a=>p.radioGroupShapes.includes(a)}}),z=v,l=n.useNameHelper("radio-group"),i=e.ref(t.value),s=new Set,E=e.computed(()=>t.loading&&t.loadingLock),F=e.computed(()=>[l.b(),l.ns("radio-vars"),{[l.bm("inherit")]:t.inherit,[l.bm("vertical")]:t.vertical,[l.bm("disabled")]:t.disabled,[l.bm("readonly")]:E.value,[l.bm("loading")]:t.loading,[l.bm(t.size)]:t.size!=="default",[l.bm(t.state)]:t.state!=="default",[l.bm(t.shape)]:t.shape!=="default"}]),I=e.reactive({currentValue:i,size:e.toRef(t,"size"),state:e.toRef(t,"state"),disabled:e.toRef(t,"disabled"),loading:e.toRef(t,"loading"),loadingIcon:e.toRef(t,"loadingIcon"),loadingLock:e.toRef(t,"loadingLock"),loadingEffect:e.toRef(t,"loadingEffect"),shape:e.toRef(t,"shape"),updateValue:u.debounceMinor(V),registerInput:C,unregisterInput:P});e.provide(p.GROUP_STATE,I),e.watch(()=>t.value,a=>{i.value=a}),g({idFor:d,focus:c,blur:()=>{var a;for(const r of s)(a=r.value)==null||a.blur()}});function V(a){i.value!==a&&(i.value=a,z("update:value",a),R(a),n.emitEvent(t.onChange,a),S())}function C(a){s.add(a)}function P(a){s.delete(a)}function c(a){var o;const r=(o=Array.from(s)[0])==null?void 0:o.value;u.isClient&&r&&document.activeElement!==r&&r.focus(a)}return(a,r)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(d),class:e.normalizeClass(F.value),role:"radiogroup","aria-orientation":a.vertical?"vertical":"horizontal","aria-labelledby":e.unref(m)},[e.renderSlot(a.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(t).options,o=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:o},[e.unref(u.isObject)(o)?(e.openBlock(),e.createBlock(e.unref(f),{key:0,inherit:"",label:o.label,disabled:o.disabled},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.content||o.label),1)]),_:2},1032,["label","disabled"])):(e.openBlock(),e.createBlock(e.unref(f),{key:1,inherit:"",label:o},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1032,["label"]))],64))),128))])],10,L))}});module.exports=w;
//# sourceMappingURL=radio-group.vue2.cjs.map