vxe-pc-ui
Version:
A vue based PC component library
1 lines • 3.03 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../ui/src/utils"),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeRadio",props:{modelValue:[String,Number,Boolean],checkedValue:{type:[String,Number,Boolean],default:void 0},title:[String,Number],content:[String,Number],disabled:{type:Boolean,default:null},name:String,strict:{type:Boolean,default:()=>(0,_ui.getConfig)().radio.strict},size:{type:String,default:()=>(0,_ui.getConfig)().radio.size||(0,_ui.getConfig)().size},label:{type:[String,Number,Boolean],default:null}},emits:["update:modelValue","change"],setup(d,e){let{slots:o,emit:u}=e,a=(0,_vue.inject)("$xeForm",null),i=(0,_vue.inject)("xeFormItemInfo",null),s=(0,_vue.inject)("$xeRadioGroup",null);var t=_xeUtils.default.uniqueId(),l=(0,_vue.reactive)({});let c={xID:t,props:d,context:e,reactData:l},v=(0,_ui.useSize)(d).computeSize,p=(0,_vue.computed)(()=>{var e,t,l=d.disabled;if(null===l&&s)return{computeIsDisabled:e,computeIsReadonly:t}=s.getComputeMaps(),e=e.value,t=t.value,e||t;return l}),_=(0,_vue.computed)(()=>(s||d).name),r=(0,_vue.computed)(()=>(s?s.props:d).strict),m=(0,_vue.computed)(()=>{var{label:e,checkedValue:t}=d,e=_xeUtils.default.isUndefined(t)?e:t;return s?s.props.modelValue===e:d.modelValue===e}),n=(e,t)=>{var l=d.content;s?s.handleChecked({label:e,checkedValue:e,checkedLabel:l},t):(u("update:modelValue",e),g("change",{value:e,label:e,checkedValue:e,checkedLabel:l},t),a&&i&&a.triggerItemEvent(t,i.itemConfig.field,e))},f=e=>{var t,l;p.value||({label:l,checkedValue:t}=d,l=_xeUtils.default.isUndefined(t)?l:t,n(l,e))},x=e=>{var t=p.value,l=r.value;t||l||({label:t,checkedValue:l}=d,(_xeUtils.default.isUndefined(l)?t:l)===(s?s.props:d).modelValue&&n(null,e))},g=(e,t,l)=>{u(e,(0,_ui.createEvent)(l,{$radio:c},t))};t={dispatchEvent:g};Object.assign(c,t,{});return c.renderVN=()=>{var{label:e,content:t,checkedValue:l}=d,e=_xeUtils.default.isUndefined(l)?e:l,l=v.value,u=p.value,a=_.value,i=m.value,r=o.default;if(s){var n=s.getComputeMaps().computeIsReadonly,n=n.value;if(n)return i?(0,_vue.h)("label",{class:["vxe-radio vxe-radio--view",{["size--"+l]:l,"is--readonly":n}]},[(0,_vue.h)("span",{class:"vxe-checkbox--label"},r?r({}):(0,_utils.getFuncText)(t))]):(0,_ui.renderEmptyElement)(c)}return(0,_vue.h)("label",{key:e,class:["vxe-radio vxe-radio--default",{["size--"+l]:l,"is--checked":i,"is--disabled":u}],title:d.title},[(0,_vue.h)("input",{class:"vxe-radio--input",type:"radio",name:a,checked:i,disabled:u,onChange:f,onClick:x}),(0,_vue.h)("span",{class:["vxe-radio--icon",i?(0,_ui.getIcon)().RADIO_CHECKED:u?(0,_ui.getIcon)().RADIO_DISABLED_UNCHECKED:(0,_ui.getIcon)().RADIO_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-radio--label"},r?r({}):(0,_utils.getFuncText)(t))])},c},render(){return this.renderVN()}});