UNPKG

@progress/kendo-vue-inputs

Version:
9 lines (8 loc) 3.27 kB
/** * @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"),a=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:e=>!0,"update:modelValue":e=>!0,change:e=>!0,focus:e=>!0,blur:e=>!0},model:{event:"changemodel"},created(){this.radioGroupName=a.guid(),a.validatePackage(f.packageMetadata),this.stateChecked=this.$props.defaultValue},watch:{value(e){e===void 0&&(this.stateChecked=this.$props.defaultValue)}},mounted(){this.rtl=a.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&&a.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:n,labelPlacement:o,valid:c}=this.$props,h=d&&d.map(function(t,s){const u=this.checkedRadioValue===t.value,m=this.checkedRadioValue===null||this.checkedRadioValue===void 0,p=a.templateRendering.call(this,this.$props.item||t.item,a.getListeners.call(this));return i.createVNode(b.RadioButton,{class:a.classNames("k-radio-item",{"k-disabled":t.disabled||r}),style:t.style,key:s,item:p,role:"none",tag:"li",valid:c,className:t.className,label:t.label,value:t.value,dataItem:t,checked:u,disabled:!!(t.disabled||r),labelPlacement:t.labelPlacement?t.labelPlacement:o,tabIndex:t.tabIndex?t.tabIndex:m&&s===0||u?0:-1,index:s,name:n||t.name||this.radioGroupName,onChange:this.handleChange,onFocus:this.handleFocus,onBlur:this.handleBlur},{default:()=>[t.content]})},this);return i.createVNode("ul",{role:"radiogroup",class:this.radioGroupClasses,dir:this.currentDir,"aria-labelledby":e,"aria-describedby":l},[h])}});exports.RadioGroup=g;