UNPKG

vue-amazing-ui

Version:

An Amazing Vue3 UI Components Library, Using TypeScript.

5 lines (4 loc) 4.62 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),y=require("../utils/index.cjs"),S=["onClick"],$={class:"radio-label"},p=["onClick"],w={class:"radio-label"},V={key:0,class:"radio-label"},z={class:"radio-label"},N=e.defineComponent({__name:"Radio",props:{options:{default:()=>[]},disabled:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},gap:{default:8},button:{type:Boolean,default:!1},buttonStyle:{default:"outline"},buttonSize:{default:"middle"},value:{type:[String,Number,Boolean],default:void 0}},emits:["update:checked","update:value","change"],setup(l,{emit:B}){const o=l,r=e.ref(!1),d=e.ref(),n=e.ref(!1),{colorPalettes:m}=y.useInject("Radio"),u=B,g=y.useSlotsExist(["default"]),C=e.computed(()=>o.options.length),h=e.computed(()=>o.button?0:!o.vertical&&Array.isArray(o.gap)?`${o.gap[1]}px ${o.gap[0]}px`:`${o.gap}px`);e.watchEffect(()=>{r.value=o.checked}),e.watchEffect(()=>{d.value=o.value});function s(t){return t===void 0?o.disabled:t}function b(t){t!==d.value&&(f(),d.value=t,u("update:value",t),u("change",t))}function k(){r.value||(f(),r.value=!0,u("update:checked",!0),u("change",!0))}function f(){n.value?(n.value=!1,e.nextTick(()=>{n.value=!0})):n.value=!0}function c(){n.value=!1}return(t,v)=>C.value?(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,class:["radio-wrap",{"radio-vertical":!l.button&&l.vertical}],style:` --radio-gap: ${h.value}; --radio-primary-color: ${e.unref(m)[5]}; `},t.$attrs),[l.button?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(l.options,(a,i)=>(e.openBlock(),e.createElementBlock("div",{tabindex:"0",class:e.normalizeClass(["radio-button-wrap",{"radio-button-checked":d.value===a.value,"radio-button-disabled":s(a.disabled),"radio-button-solid":l.buttonStyle==="solid","radio-button-small":l.buttonSize==="small","radio-button-large":l.buttonSize==="large"}]),key:i,onClick:E=>s(a.disabled)?()=>!1:b(a.value)},[e.createElementVNode("span",w,[e.renderSlot(t.$slots,"default",{option:a,label:a.label,index:i},()=>[e.createTextVNode(e.toDisplayString(a.label),1)],!0)]),s(a.disabled)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["radio-wave",{"wave-active":n.value&&d.value===a.value}]),onAnimationend:c},null,34))],10,p))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.options,(a,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["radio-container",{"radio-disabled":s(a.disabled)}]),key:i,onClick:E=>s(a.disabled)?()=>!1:b(a.value)},[e.createElementVNode("span",{class:e.normalizeClass(["radio-handle",{"radio-checked":d.value===a.value}])},[s(a.disabled)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["radio-wave",{"wave-active":n.value&&d.value===a.value}]),onAnimationend:c},null,34))],2),e.createElementVNode("span",$,[e.renderSlot(t.$slots,"default",{option:a,label:a.label,index:i},()=>[e.createTextVNode(e.toDisplayString(a.label),1)],!0)])],10,S))),128))],16)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[l.button?(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:1,tabindex:"0",class:["radio-button-wrap radio-button-single",{"radio-button-checked":r.value,"radio-button-disabled":l.disabled,"radio-button-solid":l.buttonStyle==="solid","radio-button-small":l.buttonSize==="small","radio-button-large":l.buttonSize==="large"}],style:`--radio-primary-color: ${e.unref(m)[5]};`,onClick:v[1]||(v[1]=a=>l.disabled?()=>!1:k())},t.$attrs),[e.createElementVNode("span",z,[e.renderSlot(t.$slots,"default",{},void 0,!0)]),l.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["radio-wave",{"wave-active":n.value&&r.value}]),onAnimationend:c},null,34))],16)):(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,class:["radio-container",{"radio-disabled":l.disabled}],style:`--radio-primary-color: ${e.unref(m)[5]};`,onClick:v[0]||(v[0]=a=>l.disabled?()=>!1:k())},t.$attrs),[e.createElementVNode("span",{class:e.normalizeClass(["radio-handle",{"radio-checked":r.value}])},[l.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["radio-wave",{"wave-active":n.value&&r.value}]),onAnimationend:c},null,34))],2),e.unref(g).default?(e.openBlock(),e.createElementBlock("span",V,[e.renderSlot(t.$slots,"default",{},void 0,!0)])):e.createCommentVNode("",!0)],16))],64))}});exports.default=N;