@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 2.18 kB
JavaScript
(function(t,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("../common/index.umd.js"),require("vue")):typeof define=="function"&&define.amd?define(["exports","../common/index.umd.js","vue"],n):(t=typeof globalThis<"u"?globalThis:t||self,n(t["radio-group"]={},t.common,t.Vue))})(this,function(t,n,a){"use strict";const y={...n.radioCheckboxCommonProps,id:String,disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},enumData:{type:Array},data:{type:Array},modelValue:{type:String,default:""},name:{type:String,default:""},tabIndex:{type:Number,default:-1},textField:{type:String,default:"name"},valueField:{type:String,default:"value"}};function V(e,o,r){const s=a.computed(()=>!e.disabled),c=a.computed(()=>e.data||e.enumData||e.options||[]);function l(d){return d[e.valueField]}function f(d){return d[e.textField]}function m(d,g){if(s.value){const u=l(d);r.value!==u&&(r.value=u,o.emit("changeValue",u),o.emit("update:modelValue",u))}g.stopPropagation()}return{enumData:c,getValue:l,getText:f,onClickRadio:m}}const p=a.defineComponent({name:"FRadioGroup",props:y,emits:["changeValue","update:modelValue"],setup(e,o){const{guid:r}=n.useGuid(),s=`radio_${r().slice(0,8)}`,c=a.ref(e.name||s),l=a.ref(e.modelValue),{enumData:f,onClickRadio:m,getValue:d,getText:g}=V(e,o,l),u=a.computed(()=>({"farris-checkradio-hor":e.direction==="horizontal"})),C=a.ref([]);return a.provide(n.RADIOGROUP_CONTEXT,{radios:C,parentProps:e,parentContext:o}),a.watch(()=>e.modelValue,i=>{l.value=i}),()=>a.createVNode("div",{class:["farris-input-wrap","btn-group",u.value]},[o.slots.default?o.slots.default():f.value.map((i,v)=>{const h="radio_"+e.id+c.value+i[e.valueField];return a.createVNode("div",{class:"custom-control custom-radio"},[a.createVNode("input",{type:"radio",class:"custom-control-input",name:c.value,id:h,value:d(i),checked:d(i)===l.value,disabled:e.readonly||e.disabled,tabindex:e.tabIndex,onClick:R=>m(i,R)},null),a.createVNode("label",{class:"custom-control-label",for:h},[g(i)])])})])}}),b=n.withInstall(p);t.FRadioGroup=p,t.default=b,t.radioGroupProps=y,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});