@progress/kendo-vue-inputs
Version:
9 lines (8 loc) • 3.27 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 i=require("vue"),b=require("./RadioButton.js"),t=require("@progress/kendo-vue-common"),f=require("../package-metadata.js"),g=i.defineComponent({name:"KendoRadioGroup",props:{ariaLabelledBy:String,ariaDescribedBy:String,dataItems:Array,defaultValue:[String,Number,Object],dir:String,disabled:Boolean,labelPlacement:String,item:{type:String,default:void 0},layout:{type:String,default:"vertical",validator:function(e){return["horizontal","vertical"].includes(e)}},name:String,modelValue:[String,Number,Object],value:[String,Number,Object],valid:{type:Boolean,default:void 0}},emits:{changemodel:null,"update:modelValue":null,change:null,focus:null,blur:null},model:{event:"changemodel"},created(){this.radioGroupName=t.guid(),t.validatePackage(f.packageMetadata),this.stateChecked=this.$props.defaultValue},watch:{value(e){e===void 0&&(this.stateChecked=this.$props.defaultValue)}},mounted(){this.rtl=t.isRtl(this.$el)},computed:{radioGroupClasses(){const e=this.$props.layout;return{"k-radio-list":!0,"k-list-horizontal":e==="horizontal","k-list-vertical":e==="vertical"||e===void 0}},checkedRadioValue(){const e=this.$props.value;return e!==void 0?e:this.$props.modelValue!==void 0?this.$props.modelValue:this.stateChecked},currentDir(){const e=this.$props.dir;return e||(this.rtl?"rtl":void 0)}},data(){return{rtl:!1,stateChecked:void 0}},methods:{focusElement(){this.$el&&t.focusFirstFocusableChild(this.$el)},handleChange(e){let l=e.value;this.$props.value===void 0&&!this.$props.disabled&&(this.stateChecked=l),this.$props.disabled||(this.$emit("changemodel",l),this.$emit("update:modelValue",l),this.$emit("change",{event:e,value:l}))},handleFocus(e){this.$props.disabled||this.$emit("focus",e)},handleBlur(e){this.$props.disabled||this.$emit("blur",e)}},setup(){return{inputRef:i.ref(null)}},render(){const{ariaLabelledBy:e,ariaDescribedBy:l,dataItems:d,disabled:r,name:u,labelPlacement:o,valid:c}=this.$props,h=d&&d.map(function(a,s){const n=this.checkedRadioValue===a.value,m=this.checkedRadioValue===null||this.checkedRadioValue===void 0,p=t.templateRendering.call(this,this.$props.item||a.item,t.getListeners.call(this));return i.createVNode(b.RadioButton,{class:t.classNames("k-radio-item",{"k-disabled":a.disabled||r}),style:a.style,key:s,item:p,role:"none",tag:"li",valid:c,className:a.className,label:a.label,value:a.value,dataItem:a,checked:n,disabled:!!(a.disabled||r),labelPlacement:a.labelPlacement?a.labelPlacement:o,tabIndex:a.tabIndex?a.tabIndex:m&&s===0||n?0:-1,index:s,name:u||a.name||this.radioGroupName,onChange:this.handleChange,onFocus:this.handleFocus,onBlur:this.handleBlur},{default:()=>[a.content]})},this);return i.createVNode("ul",{role:"radiogroup",class:this.radioGroupClasses,dir:this.currentDir,"aria-labelledby":e,"aria-describedby":l},[h])}});exports.RadioGroup=g;