t-fighting-design
Version:
Fighting design can quickly build interactive interfaces in vue3 applications, which looks good.
2 lines (1 loc) • 1.62 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),d=require("./index3.js"),p=require("../../radio-group/src/index3.js"),m=["value","disabled","name"],f={key:0,class:"f-radio__circle"},v={class:"f-radio__text"},_=e.defineComponent({name:"FRadio"}),b=e.defineComponent({..._,props:d.Props,emits:d.Emits,setup(s,{emit:i}){const o=s,l=e.ref(null);(()=>{const{parent:a}=e.getCurrentInstance(),t=a.type.name;t&&t==="FRadioGroup"&&(l.value=e.inject(p.RadioGroupPropsKey))})();const n=e.computed({get(){return l.value&&l.value.modelValue||o.modelValue},set(a){if(l.value&&!l.value.disabled){l.value.changeEvent(a);return}o.disabled||(i("update:modelValue",a),o.change&&o.change(a))}}),u=e.computed(()=>{const{disabled:a}=o;return["f-radio",{"f-radio__checked":n.value===o.label,"f-radio__margin":!l.value,"f-radio__disabled":a||l.value&&l.value.disabled}]});return(a,t)=>{var r;return e.openBlock(),e.createElementBlock("label",{role:"radio","aria-checked":"false",tabindex:"0","aria-labelledby":"q25_radio1-label","data-value":"True",class:e.normalizeClass(e.unref(u))},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[0]||(t[0]=c=>e.isRef(n)?n.value=c:null),hidden:"",type:"radio",value:a.label,disabled:a.disabled,name:a.name},null,8,m),[[e.vModelRadio,e.unref(n)]]),(r=l.value)!=null&&r.border?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",f)),e.createElementVNode("span",v,[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.label),1)])])],2)}}});exports.default=b;