@progress/kendo-vue-inputs
Version:
9 lines (8 loc) • 2.96 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),t=require("@progress/kendo-vue-common"),B=require("../package-metadata.js"),N=a.defineComponent({name:"KendoRadioButton",props:{ariaDescribedBy:String,checked:Boolean,disabled:Boolean,className:String,content:[String,Number,Boolean,Object],dataItem:Object,id:String,label:String,labelRender:[String,Number,Boolean,Object],item:[String,Number,Boolean,Object],labelPlacement:String,name:String,index:Number,tag:{type:String,default:"div"},size:{type:String,default:"medium",validator:function(e){return[null,"small","medium","large"].includes(e)}},tabIndex:Number,value:[String,Number,Object],valid:{type:Boolean,default:void 0},role:String},emits:{change:e=>!0,focus:e=>!0,blur:e=>!0},created(){this.calculatedId=t.guid(),t.validatePackage(B.packageMetadata)},mounted(){this.input=t.getRef(this,"input")},computed:{inputClassName(){return{"k-radio":!0,[`k-radio-${t.kendoThemeMaps.sizeMap[this.$props.size]}`]:this.$props.size,"k-invalid":this.$props.valid===!1,[this.$props.className]:this.$props.className}}},methods:{focusElement(){this.input&&this.input.focus()},handleChange(e){this.$emit("change",{event:e,value:this.$props.value})},handleFocus(e){this.$props.disabled||this.$emit("focus",{event:e,target:this})},handleBlur(e){this.$props.disabled||this.$emit("blur",{event:e,target:this})}},setup(){return{inputRef:a.ref(null)}},render(){const e=t.getDefaultSlots(this),{ariaDescribedBy:h,checked:p,disabled:n,id:s,label:r,labelRender:i,labelPlacement:m,name:b,tabIndex:g,value:f,tag:d,role:S}=this.$props;let l=r;if(i){const v=i?t.templateRendering.call(this,i,t.getListeners.call(this)):null;l=t.getTemplate.call(this,{h:a.h,template:v})}const o=t.getTemplate.call(this,{h:a.h,template:this.$props.content}),u=l!==void 0?a.createVNode("label",{class:"k-radio-label",for:s||this.calculatedId,style:{userSelect:"none"},"aria-label":r},[l]):null,c=a.createVNode("input",{role:S,type:"radio",id:s||this.calculatedId,name:b,class:this.inputClassName,ref:t.setRef(this,"input"),disabled:n,tabindex:t.getTabIndex(g,n),checked:p,style:this.$attrs.style,"aria-describedby":h,value:f,onChange:this.handleChange,onFocus:this.handleFocus,onBlur:this.handleBlur},null),$=m==="before"?a.h(d,[u,c,o,e]):a.h(d,[c,u,o,e]);return t.getTemplate.call(this,{h:a.h,template:this.$props.item,defaultRendering:$,defaultSlots:e,additionalListeners:{change:this.handleChange,focus:this.handleFocus,blur:this.handleBlur},additionalProps:{dataItem:this.$props.dataItem}})}});exports.RadioButton=N;